简体   繁体   English

for循环内的Python While循环在值无效时继续重复

[英]Python While loop inside a for loop that keeps on repeating while value is invalid

This is my code: 这是我的代码:

for i in range(1, 5):
    try:
        grade = int(input("Please enter {}'s grade for practical assessment {}: ".format(name, i)))
        while (grade < 0 and grade > 40):
            print("That is not a valid grade.")
            continue
    except ValueError:
        print("That is not a valid value.")
        continue

My question is that how to check if the grade is in range and to make the loop repeat if a false input is entered. 我的问题是,如果输入错误的输入,如何检查成绩是否在范围内,并使循环重复。 When I tried to run the program, and enter an over range input, it goes to the next assessment number instead of trying again until it's true. 当我尝试运行该程序并输入一个超出范围的输入时,它将转到下一个评估编号,而不是再次尝试直到正确为止。

You could use something like this which uses a while True loop as well as a try statement and except clause to determine whether the user entered a valid grade: 您可以使用类似以下内容的代码,该代码使用while True循环以及try statement and except clause来确定用户是否输入了有效成绩:

names = ["Adam", "Bob", "Chloe"] # Example list of names

for name in names:
  for i in range(1, 5):
    while True:
      try:
        grade = int(input("Please enter {}'s grade for practical assessment {}: ".format(name, i)))
        if not (0 <= grade <= 40):
          raise ValueError()
      except ValueError:
        print("Error: Please enter a grade between 0 and 40")
      else:
        break

Example Usage: 用法示例:

Please enter Adam's grade for practical assessment 1:  a
Error: Please enter a grade between 0 and 40
Please enter Adam's grade for practical assessment 1:  -1
Error: Please enter a grade between 0 and 40
Please enter Adam's grade for practical assessment 1:  10
Please enter Adam's grade for practical assessment 2:  4
Please enter Adam's grade for practical assessment 3:
...

Try it here! 在这里尝试

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM