2015-10-20 5 views
1

У меня возникают проблемы с получением моего кода, чтобы не принимать числа, превышающие максимальный. Когда я ставлю что-то выше 101, он просто говорит «Слишком большой, повторите попытку», но это не позволит мне попробовать еще раз. Это выводит меня из цикла, и я должен перезапустить функцию, чтобы повторить попытку. При вводе числа, меньшего, чем 0, он работает отлично.Списки и While Loops

def addGrade(grade_list): 
    myGrades = -1 
    while 0 > myGrades < 101: 
     myGrades = int(input('Enter a number between 0 and 100: ')) 
     if myGrades < 0: 
      print('Too small, try again') 
     if myGrades > 101: 
      print('Too big, try again') 
    grade_list.append(myGrades) 
    print(grade_list) 
    return myGrades 
+1

См. [Эту ссылку] (http://stackoverflow.com/help/formatting) для получения советов по форматированию сообщений, включая ваш код. – Erik

ответ

1

Проблема заключается в ваше время цикла:

, а 0> myGrades < 101:

должен быть:

while 0 < myGrades and myGrades < 101: 

вот ваш код работает, если вы входите 1337 он получает от функции

def addGrade(grade_list): 
    myGrades = -1 
    while True: 
     myGrades = int(input('Enter a number between 0 and 100: ')) 
     if myGrades == 1337: 
      break 
     if myGrades < 0: 
      print('Too small, try again') 
      continue 
     if myGrades > 101: 
      print('Too big, try again') 
      continue 
     grade_list.append(myGrades) 
     print(grade_list) 
    return myGrades 
0

Да, как уже говорилось, условие while неверно. Вот так я напишу:

my_grade = 0 
while not (0 < my_grade < 101): 
    my_grade = int(input('Enter number: ')) 
print 'Ok this is a good value {}'.format(my_grade)