Здесь у вас есть несколько ошибок:
while type(num1) != int and attempt < 5:
num1 = raw_input("Add Number one again: " )
attempt += 1
break
Оператор break
должен находиться внутри цикла, но отступ не верен.Как вы пишете, это после цикла (следовательно, бесполезно).Кроме того, когда вы читаете из стандартного ввода, вы всегда получаете строку, даже если это число.Поэтому, когда вы проверяете type(num1) != int
, это всегда ложно.Вы должны конвертировать num1
с int()
каждый раз, когда вы читаете со стандартного ввода, а не только с первого раза:
while True:
num1 = raw_input("Add Number one again: " )
try:
input = int(num1)
break
except ValueError:
print "This is not a number"
if attempt == 5:
break
attempt += 1
Здесь я пытаюсь преобразовать в целое число строку, прочитанную из stdin.Если это работает, я немедленно разрываю цикл.Если это не работает (исключение), я проверяю, сколько попыток было сделано, и прерываю цикл, если попытки равны 5.