所以,我有一个程序,我正在完成,但我显然遇到了问题。在程序中,我必须在输入中输入0时,程序将停止并打印结果。在我继续说出其他任何内容之前,这是程序:
import collections
students = collections.defaultdict(list)
while True:
student = input("Enter a name: ").replace(" ","")
if student == "0":
print ("A zero has been entered(0)")
break
if not student.isalpha():
print ("You've entered an invalid name. Try again.")
continue
while True:
grade = input("Enter a grade: ").replace(" ","")
if grade == "0":
print ("A zero has been entered(0)")
break
if not grade.isdigit():
print ("You've entered an invalid name. Try again.")
continue
grade = int(grade)
if 1 <= grade <= 10:
students[student].append(grade)
break
for i, j in students.items():
print ("NAME: ", i)
print ("LIST OF GRADES: ", j)
print ("AVERAGE: ", round(sum(j)/len(j),1))
我找到了一种方法,在"Enter a name: "
部分输入0后,如何使程序停止并发布结果。打印出来的是:
Enter a name: Stacy
Enter a grade: 8
Enter a name: 0
A zero has been entered(0)
NAME: Stacy
LIST OF GRADES: [8]
AVERAGE: 8.0
我需要对"Enter a grade: "
部分做同样的事情,但是如果我尝试像现在这样制作程序,那就是打印出来的那样:
Enter a name: Stacy
Enter a grade: 0
A zero has been entered(0)
Enter a name:
如何让程序显示结果,就像在名称输入中输入0一样?
答案 0 :(得分:1)
在您的一个输入中,检查输入是否为0.如果是,请拨打sys.exit
。这可以在任何地方完成,即使在检查等级时也是如此。只需确保包含两个选项(字符串0和int 0)。此外,它仍然说A zero has been entered(0)
的原因是因为你只是退出一个循环,然后基本上从头开始。
# Be sure to import sys!
random_place = input("Whatever is here ")
if random_place == '0' or random_pace == 0:
sys.exit(0)
您的程序将退出。
答案 1 :(得分:0)
你应该查看函数,因为它们会为你节省很多麻烦,但是这里有一个注释版本的代码,它将在输入为0时退出并显示结束消息。
import collections
students = collections.defaultdict(list)
while True: #combined while loops
print ("Enter 0 for name or grade to exit") #you don't say how to exit
student = input("Enter a name: ").replace(" ","")
if student == "0":
print ("A zero has been entered(0)")
break
grade = input("Enter a grade: ").replace(" ","")
if grade == "0":
print ("A zero has been entered(0)")
break
#can combined if student == 0 or grade == 0, but then both inputs must display
if not student.isalpha() or not grade.isdigit():
print ("You've entered an invalid name or grade. Try again.")
#since these were the same message just combine them
#can switch to too if statements if you want seperate messages
#Also you might want to add a enter only alpha or digits for... message
break
grade = int(grade)
if 1 <= grade <= 10:
students[student].append(grade)
for i, j in students.items():
print ("NAME: ", i)
print ("LIST OF GRADES: ", j)
print ("AVERAGE: ", round(sum(j)/len(j),1))