Python 最后一行代码不会执行吗?

Python 最后一行代码不会执行吗?,python,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() prin

嗨,我对最后一行代码有问题。它不会打印任何东西

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'时,应显示正确
下一个问题,但它不是,它只是打印正确

提前谢谢你

我在空闲状态下运行代码,缩进被关闭,正如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
。它会爆发。

这里有几件事:

  • 你有一个逻辑错误;如果触发了
    elif
    ,则应将invalid初始化为
    False
    ,并设置为
    True
  • 您正在从内部调用
    start()
    ,这是不必要的;相反,
    while
    可以围绕整个定义(包括
    if elif
    ),而
    invalid
    if
    中被设置为
    False

  • 您必须先设置全局变量,然后将其设置为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')
    

    这解决了您的问题吗?

    while循环似乎是一个缩进错误。您能正确格式化代码吗?请修复缩进。
    global
    声明位于每个要使用全局的函数内部,而不是在全局范围内。(
    global
    at global scope应该是一个语法错误,但事实并非如此。)这就是我在PyCharm中运行代码的方式,它与精确的缩进一起工作。显示的缩进不正确。
    while invalid
    循环的缩进不能超过
    def start
    ,但不能小于
    start
    正文的第一行。我应该如何为while循环添加结束条件?@damjandjudjevic,如果有帮助,请接受答案,欢迎您。这不起作用,这将导致在赋值或其他操作之前引用变量时出错。是否修复了缩进?