【问题标题】:How to show the results of a program by entering something in input?如何通过在输入中输入内容来显示程序的结果?
【发布时间】:2015-03-26 01:21:36
【问题描述】:

所以,我有一个程序,我正在完成,但我显然遇到了问题。在程序中,每当我在输入中输入 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 时一样?

【问题讨论】:

    标签: python printing zero


    【解决方案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)
    

    然后您的程序将退出。

    【讨论】:

    • 这只会退出程序而不显示姓名、成绩列表和平均水平
    【解决方案2】:

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

    【讨论】:

    • 如果我使用你的代码,那就太糟糕了。对不起。我非常感谢您的帮助,但问题是,在等级中输入 0 后代码仍然不打印答案,名称可以是数字(不能是),当我在其中输入 5 时,它说这是一个无效的号码。
    • @Acu 你有什么问题?此代码根据您对 python3 的问题起作用 - 您从未指定您使用的是哪个,但您的代码看起来像 python3。如果此代码仍然不起作用,您需要具体说明原因并与我们一起根据您的技能改进它 - 否则只是我在做您的功课。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多