2016-10-14 1 views
1
ans = raw_input("Please set the starting juvenile population (or type same to leave it unchanged):") 
cont, num = setGen0Check(ans, 0) 
if cont == 1: 
    if num == 1: 
     juvenilePop = round(float(ans), 3) 
else: 
    invalidInput() 
    y = setGen0(x, y, z) 

def setGen0Check(ans, bounds): 
    cont = 1 
    cont2 = 1 
    num = (numOrStrCheck(46, 57, ans)) 
    if ans.lower() != "same" and num == 0: 
     invalidInput() 
     count = 0 
    elif len(ans) == 0: 
     invalidInput() 
     cont = 0 
    elif num == 1: 
     if float(ans) < 0: 
      invalidInput() 
      cont = 0 
     if bounds == 1: 
      cont2 = setGen0bounds(0, 1, ans) 
     if bounds == 2: 
      cont2 = setGen0bounds(15, 25, ans) 
    if cont == 1 and cont2 == 1: 
     return 1 
    else: 
     return 0 
    return num 

def numOrStrCheck(lowerBnd, higherBnd, ans): 
    for i in ans: 
     b = ord(i) 
     if b > higherBnd or b < lowerBnd: 
      return 0 
    return 1 

Всякий раз, когда я даю ему вход я получаю ошибку:Невозможно итерацию тип объекта ошибка «ИНТ» без перебора целого

TypeError: 'int' object is not iterable

с линией Referance:

cont, num = setGen0Check(ans, 0)

Он работал до тех пор, пока я не разрешил вводить строковые вводы (требуя моего прохождения того, является ли это число в той же функции, что и вход).

ответ

0

Это не имеет никакого отношения к raw_input.

Функция setGen0Check возвращает одно целое значение. При выполнении инструкции: cont, num = setGen0Check(ans, 0), интерпретатор пытается выполнить итерацию по возвращаемому значению, потому что ему нужно 2 значения для назначения cont и num. Затем возникает исключение, потому что он не может перебирать int.

Если вы задаете такие вопросы, пожалуйста, напишите полный отзыв, это было бы очень полезно.

0

Изменить код из

for i in ans: 

for i in range(ans): 

Integer не итерацию объект.

+0

Благодарим вас за помощь, я буду помнить об этом в будущем. – UncarbonatedMilk