While循环即使是错误也停止了吗?

时间:2018-10-21 04:48:18

标签: python

我认为while循环的逻辑是合理的,但是在第一个循环之后它突然停止了。

choice=int(input("Enter choice:"))
if (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
    valid = False
while valid == False:
    print("Invalid choice, please enter again")
    choice=int(input("Enter choice:"))
    return choice        
if choice ==1:
    valid=True
    display_modules_average_scores()
    menu()
elif choice ==2:
    valid=True
    display_modules_top_scorer()
    menu()
elif choice==0:
    exist=True
    print("===============================================")
    print("Thank you for using Students' Result System")
    print("===============================================")

如果我输入5,它会:

print("Invalid choice, please enter again")
choice=int(input("Enter choice:"))

但是,如果我再次输入5,它将停止程序。我在做什么错了?

5 个答案:

答案 0 :(得分:0)

  

如果我再次输入5,它将停止程序

因为您有一个return语句,该语句立即结束您正在其中运行的函数。

您似乎正在尝试创建无限循环。您可以以此测试退出和无效条件。注意:选择永远不会等于空字符串

MaxDegreeOfParallelism

要退出循环,可以使用while True: choice=int(input("Enter choice (0 to exit):")) if choice == 1: pass # do something elif choice == 2: pass # do something else elif choice == 0: break else: print("Invalid choice, please enter again") print("Thanks") ,它在循环后执行代码。如上所述,使用break结束功能。有所不同

如果您正在return函数内部运行此循环,则无需再次实际调用菜单函数。这就是while循环的重点

答案 1 :(得分:0)

通过定义功能,我们可以轻松执行此任务,而无需重复代码。 下面的代码调用函数inputchoice(),然后inputchoice()将检查用户输入的值,如果该值无效,则inputchoice将自行调用,然后过程继续进行,直到用户输入正确的输入为止。

def inputchoice():
   choice=int(input("Enter choice: "))
   if (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
       print("Invalid choice!")
       choice = inputchoice()
   return choice

def menu():
 choice = inputchoice()   
 print(choice)
 if choice ==1:
      valid=True
      print("Do something if Valid = True")
 elif choice ==2:
      valid=True
      print("Do something if Valid = True")
 elif choice==0:
      valid=True
      print("Do something if Valid = True")

menu()  #implementing menu function

答案 2 :(得分:0)

我更喜欢用您的函数编写字典,以使代码保持干净。

在此处考虑此代码:

def choice1():
    return 'choice1'

def choice2():
    return 'choice2'

def defaultchoice():
    return 'default'

choicedict = {
    '1': choice1,
    '2': choice2
}

while True:
    choice = input("Enter choice (0 to exit):") # maintain as str to avoid error!
    if choice == '0':
        break
    value = choicedict.get(choice, defaultchoice)()
    print(value)

答案 3 :(得分:0)

单个功能代码

def menu():
 choice=int(input("Enter choice:"))


 if (choice=="" or (choice!=0 and choice!=1 and choice!=2)):
    print("Invalid choice, please enter again")
    menu()
 elif choice ==1:
    print("Oh, its working")
    menu()
 elif choice ==2:
    print("Oh, its working")
    menu()
 elif choice==0:
    print("===============================================")
    print("Thank you for using Students' Result System")
    print("===============================================")

menu()

答案 4 :(得分:0)

嗨,我会使用while循环。从这项任务看来,我们来自同一机构。这就是我使用的代码,希望对您有所帮助。

while True:
    user_input = input("Enter choice: ")
    if (user_input == "0"):
        print("=====================================================")
        print("Thank You for using Students' Result System")
        print("=====================================================")
        break
    elif(user_input == "1"):
        display_modules_average_scores()      

    elif(user_input == "2"):
        display_modules_top_scorer()
    else:
        print("Invalid choice, please enter again")