Задача (из codeeval) состоит в том, чтобы прочитать файл с несколькими разными номерами и напечатать 1, если он является счастливым числом или напечатать 0, если он не является счастливым числом. Часть задачи состоит в том, чтобы игнорировать элемент (num
), если это пустая строка. Вот мой код:Python: Игнорирование пустых строк при идентификации счастливых чисел
import sys
test_cases = open(sys.argv[1], 'r')
for num in test_cases:
if num=="":
pass
else:
liszt=[]
while num>1:
newnum=str(num)
total=0
for i in newnum:
total+=int(i)**2
if total not in liszt:
liszt.append(total)
num=total
else:
print 0
break
else:
print 1
test_cases.close()
Я получаю сообщение об ошибке, которое ссылается на total+=int(i)**2
линии, говоря так:
ValueError: invalid literal for int() with base 10: ''
Что заставляет меня думать, что я не быть успешным в игнорировании пустых строк. Я на правильном пути? Если да, то какое изменение я должен внести в код?
Благодарим за помощь!
Я думаю, что вы хотите ' continue' вместо 'pass'. – squiguy
Просто 'print num' и посмотреть, что происходит ... – alfasin
@squiguy Оба будут делать то же самое здесь. – Nabla