Найти - Пользователи
Полная версия: Почему len() збивает индекс?
Начало » Python для новичков » Почему len() збивает индекс?
1 2
nixis
Пишу код;
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
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
>>> 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
Та объясните вы нормально новичку. Вот допустим текст состоит из 1-го символа. Его len() равна 1, но индекс этого символа равен 0. Т.е. отнимайте единицу от длины, ибо индекс начинается с нуля, а не с единицы
sanodin
У него пустая строка была
dimy44
блин. Не успел удалить, уже ответили, по стакану написал, не разобрался.
nixis
Правильно ли я понял?
Нельзя писать:
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
отдельно можно
nixis
Спасибо большое. Вроде дошло)
Век живи, век учись)
Lexander
nixis
Если вы действительно хотите научиться, возьмите код, который я привел выше и напротив каждой строчки напишите смысл происходящего, как вы это понимаете. Т.е., что за операция выполняется, какой результат этой операции и почему.
Я готов разобрать его с вами, если у вас будет такое желание.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB