无法在 python 中跳出 while 循环

Cannot break out of while loop in python

无法跳出 python 中的 while 循环: 我尝试将所有代码合并在一起,没有 main 和 getheight 函数,它仍然给我一个无限循环。

def main():
    x = 0
    while x not in range (1,23):
        getheight()
        if x in range (1,23):
            break
    for i in range (x):
        for j in range (x - j):
            print (" ", end="")
        for j in range (x):
            print ("#", end="")
        print ("  ", end="")
        for j in range (x):
            print ("#", end="")
        "\n"

def getheight():
    x = input("Give me a positive integer no more than 23 \n")
    return x

if __name__ == "__main__":
    main()
main()中的

x是一个局部变量,它独立于getheight()中的x变量。您正在 return 从后者获取新值,但忽略 returned 值。从函数调用结果中设置x in main:

while x not in range (1,23):
    x = getheight()
    if x in range (1,23):
        break

您还需要将 getheight() 函数修复为 return 一个 整数 ,而不是字符串:

def getheight():
    x = input("Give me a positive integer no more than 23 \n")
    return int(x)

Return 并不意味着它将自动更新 main 中与 return 变量匹配的任何变量名称。如果您不存储此 return 值,则 return 值将消失。因此你必须做

x=getheight()

更新变量 x