【问题标题】:Infinite loop for python programpython程序的无限循环
【发布时间】:2018-03-21 16:46:07
【问题描述】:

我的这段代码有问题,这个程序应该一直允许你输入学生,直到通过次数达到 8 或学生总数达到 10。但目前它只是不断要求输入,因此存在无限循环.我该如何解决这个问题?

total_students=0
student_passes=0
student_failures=0

while (total_students <= 10) or (student_passes != 8):
        result=int(input("Input the exam result: "))
        if result>=50:
            student_passes = student_passes + 1
        else:
            student_failures = student_failures + 1
        total_students = total_students + 1

 print (student_passes)
 print (student_failures)

 if student_passes >= 8:
     print ("Well done")

【问题讨论】:

  • 更改还是和?
  • 但我只需要满足其中任何一个条件即可结束循环。
  • @AbdullahJadoon 你需要两个条件都为真留在循环中。

标签: python while-loop infinite-loop


【解决方案1】:

将或更改为和。虽然两者都是正确的,但您继续:

total_students=0
student_passes=0
student_failures=0

while (total_students != 10) and (student_passes != 8): # != or <
        result=int(input("Input the exam result: "))
        if result>=50:
            student_passes += 1
        else:
            student_failures += 1
        total_students +=1

print (student_passes)
print (student_failures)

【讨论】:

  • 谢谢!为什么它等待 11 个输入直到程序终止?应该是 10。
  • @AbdullahJadoon 我们可以更改为 != 10,因为我们正在增加值。当它达到 10 时,我们不想继续。您的错误是
  • 非常感谢您的帮助。我的工作已经完成了。
  • @AbdullahJadoon 另请注意,您可以使用 += 1 来增加,例如学生总数 +=1。使事情更具可读性
  • 哇哦,我不知道你能做到这一点。太好了,谢谢!
【解决方案2】:

您可能需要重新访问您的代码。我不是python专家,但是我相信你应该修改while循环的条件。

例如 while (total_students

total_students=0
student_passes=0
student_failures=0

while (total_students <= 10) or (student_passes <= 8):
        result=int(input("Input the exam result: "))
        if result>=50:
            student_passes = student_passes + 1
        else:
            student_failures = student_failures + 1
        total_students = total_students + 1

 print (student_passes)
 print (student_failures)

 if student_passes >= 8:
     print ("Well done")

【讨论】:

    【解决方案3】:

    您应该使用 and 而不是 or 来满足您的要求。

    total_students=0
    student_passes=0
    student_failures=0
    
    while (total_students <= 10 and student_passes < 8):
            result=int(input("Input the exam result: "))
            if result>=50:
                student_passes = student_passes + 1
            else:
                student_failures = student_failures + 1
            total_students = total_students + 1
    
    print (student_passes)
    print (student_failures)
    
    if student_passes >= 8:
        print ("Well done")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 2015-11-10
      相关资源
      最近更新 更多