2017-10-10 90 views
0

我有这个代码的问题,这个程序应该不断让您输入学生,直到通过次数达到8或学生总数达到10个。然而,目前它只是不断要求输入,因此有一个无限循环。我该如何解决这个问题?python程序的无限循环

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") 
+2

更改或to和? –

+0

但我只需要这些条件中的任何一个来结束循环。 –

+1

@AbdullahJadoon你需要_both_条件才能在循环中成为_stay_。 – khelwood

回答

2

改变或与。虽然两者都属实,但您仍继续:

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) 
+0

谢谢!为什么等到11个输入,直到程序终止为止?它应该是10. –

+1

@AbdullahJadoon我们可以改变为!= 10,因为我们正在增加价值。当它击中10我们不想继续。你的错误<= 10,这应该是<10 –

+0

辉煌非常感谢您的帮助。我在这里的工作已经完成。 –

0

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

如while(total_students < = 10)或(student_passes < = 8): 这将解决您的问题。

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") 
0

您应该使用,而不是,以满足您的要求。

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")