2014-01-10 75 views
0

目前我正在掌握与Python,我试图产生一个小脚本,但我有一个IF语句的问题,理想情况下,我想它,如果用户输入一个“N “或”n“代表”否“,那么我喜欢这个句子显示”感谢您使用FinalGrade。再见。“然而,它只是回圈并反应,就好像我输入了“Y”,允许输入另一名学生。蟒蛇IF如果陈述不显示

继承人我的代码:

results = [] 
cont = 'y' or 'Y' 

print ("\n") 
print ("-----------------------------------------------------------------------------") 
print ("\n") 
Institution = str(input("Please Enter the Name of Your Insitution: ")) 

while cont=='y' or 'Y': 
    print ("\n") 
    print ("---------------------------------NEW STUDENT---------------------------------") 
    print ("\n") 
    Year = str(input("Please Enter the Year of the Student (For Example, 'Year 1/2/3/4'): ")) 
    print ("\n") 
    print ("-----------------------------------------------------------------------------") 
    print ("\n") 
    Student = str(input("Student Full Name: ")) 
    print ("\n") 
    Grade1 = int(input("Enter Student's First Term Grade: ")) 
    Grade2 = int(input("Enter Student's Second Term Grade: ")) 
    Grade3 = int(input("Enter Student's Third Term Grade: ")) 
    Grade4 = int(input("Enter Student's Fourth Term Grade: ")) 

    average = (Grade1+Grade2+Grade3+Grade4)/4 

    print ("\n") 
    print ("-----------------------------------------------------------------------------") 
    print ("\n") 
    print ("Total Grade Average: %G" % (average)) 

    passed_or_failed = "PASSED" 
    if average < 40: 
     passed_or_failed = 'FAILED' 
    results.append(passed_or_failed) 

    print ("\n") 
    print ("%s has: %s" % (Student, passed_or_failed)) 
    print ("\n") 

我有我的代码中的主要问题如下:

cont = input('Do you want to keep entering students? Y/N: ') 
if cont=='N' or 'n': 
    print ("\n") 
    print ("-----------------------------------------------------------------------------") 
    print ("\n") 
    print ("Thank you for using FinalGrade. Goodbye.") 

有没有办法解决这个问题?谢谢。

+0

尝试'如果在['N','n']中继续:'也重复的问题。 –

+0

@tobias_k犯规解决问题:(林不知道,如果林做错了什么或没有,但我取代了我:“如果续==‘N’或‘N’:”什么你的建议,并没有工作 – Oscar

+0

注意,您必须与'while'循环的条件同样的问题! –

回答

3

如果续== 'N' 或 'N':

你需要做的要么:

if cont in "nN": 

或:

if cont in ["n", "N"]: 

甚至:

if cont.lower() == "n": 

写你有什么,你期望if cont=='N' or 'n':无法正确评估。 这基本上等于在说:

  • 如果续是( “N” 或 “n”),那么做点什么

注:的括号( “N” 或 “n” );这将评估为True,然后您的 if语句变为:if cont == True:总是计算为True

参见:

>>> cont = "Y" 
>>> if cont == "N" or "n": 
...  print "cont is N or n" 
... 
cont is N or n 

更新::

你也想改变你的代码结构有点,以及对这样的事情:

while True: 
    ... most of your code ... 

    cont = raw_input("Do you want to continue? (Y/N)") 
    if cont.lower() == "n": 
     break 

更新II :来自您的意见这是一个comp lete您的程序的修正版本: #!在/ usr /斌/包膜蟒蛇

#FinalGrade 

results = [] 

print ("\n") 
print ("-----------------------------------------------------------------------------") 
print ("\n") 
Institution = str(input("Please Enter the Name of Your Insitution: ")) 

while True: 
    print ("\n") 
    print ("---------------------------------NEW STUDENT---------------------------------") 
    print ("\n") 
    Year = str(input("Please Enter the Year of the Student (For Example, 'Year 1/2/3/4'): ")) 
    print ("\n") 
    print ("-----------------------------------------------------------------------------") 
    print ("\n") 
    Student = str(input("Student Full Name: ")) 
    print ("\n") 
    Grade1 = int(input("Enter Student's First Term Grade: ")) 
    Grade2 = int(input("Enter Student's Second Term Grade: ")) 
    Grade3 = int(input("Enter Student's Third Term Grade: ")) 
    Grade4 = int(input("Enter Student's Fourth Term Grade: ")) 

    average = (Grade1+Grade2+Grade3+Grade4)/4 

    print ("\n") 
    print ("-----------------------------------------------------------------------------") 
    print ("\n") 
    print ("Total Grade Average: %G" % (average)) 

    passed_or_failed = "PASSED" 
    if average < 40: 
     passed_or_failed = 'FAILED' 
    results.append(passed_or_failed) 

    print ("\n") 
    print ("%s has: %s" % (Student, passed_or_failed)) 
    print ("\n") 

    cont = input('Do you want to keep entering students? Y/N: ') 

    if cont.lower() == "n": 
     print ("\n") 
     print ("-----------------------------------------------------------------------------") 
     print ("\n") 
     print ("Thank you for using FinalGrade. Goodbye.") 
     break 

采样运行:http://codepad.org/hvoYCXWL

注意,条件检查输入更多的数据被正确地缩进while循环的块中。这是重要

+0

您好我都尝试的您的解决方案的例子和森泰斯仍然心不是被显示出来,而不是它只是返回到新生节:(我是不是做错了什么? – Oscar

+0

见更新答案 –

+0

我不认为你的逻辑不断爆发出循环:/ –

0
if cont=='N' or 'n': 

应该

或者更好

if cont in [ 'N', 'n' ]: