最后一行代码不会执行?

时间:2017-12-06 19:48:57

标签: python

您好我的代码的最后一行有问题。它不会打印任何东西。

invalid=True
global invalid
def start()
  x = input('Type the correct key:')
  if ("m" == x) or ("M"==x):
   print('Correct!')
  elif x!='m' or x!='M':
   print('Invalid Input.')
   invalid=False
 while invalid:
  start()
print('Next Question')

当输入为'm'或'M'时,应该说正确!
  下一个问题,但它不只是打印正确!
提前谢谢!

3 个答案:

答案 0 :(得分:1)

我在IDLE中运行代码并且缩进已关闭,同样如user2357112所述,global应该进入函数但我不知道你为什么使用它。

此外,你应该有一个条件让你的while循环结束。现在循环不会结束。

def start():
    invalid=True
    global invalid
    x = input('Type the correct key:')
    if ("m" == x) or ("M"==x):
        print('Correct!')
    else:
        print('Invalid Input.')
        invalid=False
    while invalid:
        start()
        print('Next Question')

这可能会有所帮助

def startm():
    valid = True
    while(valid):
        x = input('Type the correct key:')
        if ("m" == x) or ("M"==x):
            print('Correct!')
        else:
            print('Invalid Input.')
            valid=False

您可以使用条件True启动while循环,只要其有效循环将继续运行。一旦循环变为False。它会爆发。

答案 1 :(得分:0)

这里有几件事:

  1. 你有一个逻辑错误;如果False被触发,则无效应初始化为True并设置为elif
  2. 您从内部调用start(),这是不必要的;相反,while可以围绕整个定义(包含if-elif),invalid内的False设置为if

答案 2 :(得分:-1)

您必须先设置全局变量,然后将其设置为True。这将有效

global invalid 
invalid = True
def start():
  x = input('Type the correct key:')
  if ("m" == x) or ("M"==x):
   print('Correct!')
  elif x!='m' or x!='M':
   print('Invalid Input.')
   invalid=False
while invalid:
  start()
print('Next Question')

这可以解决你的问题吗?