-4
x=0
y=0
while x !="exit" or y !="exit":
    x= raw_input("Enter your name: ")
    y= raw_input("Enter your grade: ")
    if y!= "exit":
        g=int(y)
    if g<50 or g>100:
        print("Invalid input")
    else:
        if g>=50 and g<70:
             print("not a good grade,work harder")
        if g>=70 and g<90:
            print("Nice grade, try to get higher next time")
        if g>=90 and g<=100:
            print("Excellent grade!")
print("Good bye")

所以基本上这是我的程序,它运行良好,但我遇到了一些问题。
首先,程序仅在我在 x 和 y 中键入 exit 时退出,并且在 x 或 y 中键入 exit 时我需要退出。
另一个问题是,一旦程序关闭,(一旦我在 x 和 y 中键入 exit),结果是:

Enter your name: exit
Enter your grade: exit
Nice grade, try to get higher next time
Good bye

仅键入一个出口后,如何使程序退出?
以及如何解决它打印的问题

Nice grade, try to get higher next time  
Good bye 

仅输入一个出口后,如何使循环退出?
以及如何修复结果,以便在输入退出后仅打印“再见”?

4

4 回答 4

2

检查后需要一份break声明。我已经更换了支票以打破如果ify != "exit"y == "exit"

此外,您可以使用一个if-elif-else块,并简化最后一个 if 条件,因为它现在是多余的。此外,您可以简化条件本身以使用a < b < c格式来提高可读性。

x=0
y=0
while x !="exit" or y !="exit":
    x= raw_input("Enter your name: ")
    if x == "exit":
        break
    y= raw_input("Enter your grade: ")
    if y == "exit":
        break
    g=int(y)
    if 50 <= g <= 100:
        if 50 <= g < 70:
             print("not a good grade,work harder")
        elif 70 <= g < 90:
            print("Nice grade, try to get higher next time")
        else:
            print("Excellent grade!")
    else:
        print("Invalid input")
print("Good bye")   
于 2013-10-15T18:25:03.537 回答
1

这应该是如何做到这一点的一个很好的例子:

#grade test
while True:
    #set name
    name=raw_input("Enter your name: ")
    #test if name is quit
    if str(name)=='quit':
        break
    #set grade
    grade=raw_input("Enter your grade: ")
    #test if grade is quit
    if str(grade)=='quit':
        break
    #if it isn't quit, set grade to a number
    grade=int(grade)
    #evaluate the actual grade
    if grade<0 or grade>100:
        print("Invalid input")
    elif grade>=50 and grade<70:
        print("not a good grade,work harder")
    elif grade>=70 and grade<90:
        print("Nice grade, try to get higher next time")
    elif grade>=90 and grade<=100:
        print("Excellent grade!")
    else:
        print("Consider getting a tutor..")
#since we broke when we entered quit, we have exited the loop and now we can quit the program
print "Goodbye!"
exit(1)

让我知道事情的后续!

于 2013-10-15T18:32:08.240 回答
1
while x !="exit" or y !="exit":

将返回 true 除非 x 和 y = 'exit'

您所描述的行为将需要

while x !="exit" and y !="exit":

为了允许 x 或 y 结束 while 循环。

您要求的其他行为(在输入“退出”后立即中断)可以通过在 if 子句中包含循环的其余部分来测试“退出”来轻松完成

您描述的其余不稳定行为(打印语句)就像是由缩进错误引起的。

这是我认为您正在描述的版本,使用在 Python 3.3 中工作的原始代码

x=0
y=0
while x !="exit" and y !="exit":
    x= input("Enter your name: ")
    if x != 'exit':
         y= input("Enter your grade: ")
         if y!= "exit":
              g=int(y)
              if g<50 or g>100:
                   print("Invalid input")
              else:
                   if g>=50 and g<70:
                        print("not a good grade,work harder")
                   elif g>=70 and g<90:
                        print("Nice grade, try to get higher next time")
                   else:
                        print("Excellent grade!")
print("Good bye")
于 2013-10-15T18:57:53.570 回答
0

这只是一些非常基本的逻辑,但是替换

x= raw_input("Enter your name: ")
y= raw_input("Enter your grade: ")

x= raw_input("Enter your name: ")
if x == "exit": break
y= raw_input("Enter your grade: ")
if y == "exit": break
于 2013-10-15T18:24:51.993 回答