nixis
Апрель 9, 2014 17:33:40
Пишу код;
f = open('Имя_файла')
x = 0
num_char_f = len(f.read())
str_f = f.read()
char_x = str_f{x} - Поставил фигурные скобки, потому что квадратные форум стирает.
При трансляции пишет:
IndexError: string index out of range
Но когда стираю строку “num_char_f = len(f.read())”, все работает.
Хоть убей, не пойму почему так. Помогите пожалуйста новичку, не оставайтесь равнодушными)
sanodin
Апрель 9, 2014 17:48:26
f = open('1.py','r')
x = 0
str_f = f.read()
f.close()
num_char_f = len(str_f)
print num_char_f
print str_f
print str_f[x]
Lexander
Апрель 9, 2014 17:58:43
>>> f = open("mysql.opt")
>>> f.tell()
0
>>> s = f.read()
>>> s
"# Options file generated by MySQL client\n\n..." # rest of file here
>>> f.tell()
316
>>> s2 = f.read()
>>> s2
''
>>> s[5]
't'
>>> s2[5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
Так понятно?
dimy44
Апрель 9, 2014 19:11:00
Та объясните вы нормально новичку. Вот допустим текст состоит из 1-го символа. Его len() равна 1, но индекс этого символа равен 0. Т.е. отнимайте единицу от длины, ибо индекс начинается с нуля, а не с единицы
sanodin
Апрель 9, 2014 19:13:43
У него пустая строка была
dimy44
Апрель 9, 2014 19:16:19
блин. Не успел удалить, уже ответили, по стакану написал, не разобрался.
nixis
Апрель 9, 2014 19:52:56
Правильно ли я понял?
Нельзя писать:
num_char_f = len(f.read())
str_f = f.read()
Нужно:
str_f = f.read()
num_char_f = len(str_f)
…
И еще, нельзя присвоить переменной то что считалось из файла, если уже есть переменная у которой есть такое значение? Пример кода:
f.open('Имя_файла')
str_1 = f.read()
# Первая переменная
str_2 = f.read()
# Вторая переменная которая будет ругаться
Нужно так:
str_1 = f.read()
str_2 = str_1
sanodin
Апрель 9, 2014 20:06:06
отдельно можно
nixis
Апрель 9, 2014 20:44:01
Спасибо большое. Вроде дошло)
Век живи, век учись)
Lexander
Апрель 9, 2014 22:04:41
nixis
Если вы действительно хотите научиться, возьмите код, который я привел выше и напротив каждой строчки напишите смысл происходящего, как вы это понимаете. Т.е., что за операция выполняется, какой результат этой операции и почему.
Я готов разобрать его с вами, если у вас будет такое желание.