繁体   English   中英

如何通过在输入中输入内容来显示程序的结果?

[英]How to show the results of a program by entering something in input?

所以,我有一个程序,我正在完成,但我显然遇到了问题。 在程序中,我必须在输入中输入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: "部分"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.如果是,则调用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)

您的程序将退出。

您应该查看函数,因为它们会为您节省很多麻烦,但是这里有一个注释版本的代码,它将在输入为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))

暂无
暂无

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

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