#python
#python
Вопрос:
Я написал приведенный ниже код для завершения назначения:
fname = raw_input("Enter file name: ")
fh = open(fname)
total = 0
count = 0
for line in fh:
if not line.startswith("X-DSPAM-Confidence:") : continue
pos = line.find(':')
num = float(line[pos 1:])
for number in num:
total = total num
count = 1
print 'Average spam confidence:', total/count
Система продолжает выдавать сообщение об ошибке, гласящее, что
объект с плавающей точкой не может быть повторен
Я знаю, что допустил ошибку из for number in num:
, и правильный ответ:
fname = raw_input("Enter file name: ")
fh = open(fname)
total = 0
count = 0
for line in fh:
if not line.startswith("X-DSPAM-Confidence:") : continue
pos = line.find(':')
num = float(line[pos 1:])
total = total num
count = 1
print 'Average spam confidence:', total/count
но мой вопрос таков:
в правильном ответе объект с плавающей точкой также может быть итерирован?
Спасибо за помощь!!
Комментарии:
1. Как должна работать итерация по версии 3.14?
Ответ №1:
Как отмечается в глоссарии Python, объект является итеративным, если он «способен возвращать свои элементы по одному за раз». num
это объект float, представляющий собой всего лишь одно число, и он не может возвращать свои элементы по одному, например список, набор или словарь. Таким образом, нет смысла писать for number in num:
— чтобы это сработало, num
должен быть итерируемый, чтобы он мог возвращать свои элементы по одному за раз как number
. Вместо этого вы должны просто добавить num
к total
напрямую, вызвав total = total num
(или, что еще лучше, total = num
)
Комментарии:
1. Обратите внимание, что вы могли бы сделать
for number in range(num)
, который работает для целочисленных аргументов