当前位置: 首页 > 知识库问答 >
问题:

Python While循环位于for循环中,该循环在值无效时不断重复

梁丘威
2023-03-14

这是我的代码:

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

我的问题是如何检查分数是否在范围内,如果输入了错误的输入,如何使循环重复。当我试图运行程序并输入一个超过范围的输入时,它会转到下一个评估数字,而不是再次尝试,直到它是真的。

共有1个答案

鲁靖
2023-03-14

您可以使用类似这样的方法,使用while True循环以及try语句和except子句来确定用户是否输入了有效的分数:

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

用法示例:

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:
...

在这里试试!

 类似资料:
  • hasNext()的定义是“如果此扫描仪的输入中有另一个标记,则返回true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。” 当我把 standardInput.hasNext() 放在 for 循环中时,程序会向无穷大运行。但是如果我把它放在 while-loop 中,它不会运行到无穷大。这两个程序之间的区别在哪里,为什么其中一个有效而另一个无效? for循环: while-l

  • 我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码:

  • 问题内容: 我第一次不了解PHP。我一直在脚本中使用for循环,while循环,foreach循环。我想知道 哪一个性能更好? 选择循环的标准是什么? 当我们在另一个循环中循环时应该使用哪个? 我一直想知道要使用哪个循环的代码。 很明显,我可以使用while编写上面的代码。希望有人能帮助我找出哪个循环更适合使用。 问题答案: 哪一个性能更好? 没关系 选择循环的标准是什么? 如果只需要遍历对象或数

  • for循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 语法 (Syntax) Perl编程语言中for循环的语法是 - for ( init; condition; increment ) { statement(s); } 这是for循环中的控制流 - init步骤首先执行,只执行一次。 此步骤允许您声明和初始化任何循环控制变量。 只要出现分号,就不需要在此处输入声明。

  • ' for '循环是最紧凑的循环形式。 它包括以下三个重要部分 - loop initialization ,我们将计数器初始化为起始值。 初始化语句在循环开始之前执行。 test statement将测试给定条件是否为真。 如果条件为真,则执行循环内给出的代码,否则控件将退出循环。 iteration statement ,您可以在其中增加或减少计数器。 您可以将所有三个部分放在一行中以分号分隔

  • 问题 你想通过一个 for 循环来迭代数组、对象或范围。 解决方案 # for(i = 1; i<= 10; i++) x for x in [1..10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] # To count by 2 # for(i=1; i<= 10; i=i+2) x for x in [1..10] by 2 # => [ 1, 3, 5,