Python 如何使while循环分配变量?

Python 如何使while循环分配变量?,python,function,python-3.x,variables,Python,Function,Python 3.x,Variables,我的理解是,Python不会在while循环中通过输入更改变量,因此打印时hiOrLo仍然为0,但我需要hiOrLo为h或l,无论我选择哪一个,我如何在保持它为函数的同时做到这一点?您需要全局关键字: def valid(): while True: hiOrLo = input("Type 'h' for higher and 'l' for lower.") if hiOrLo == "h" or hiOrLo == "l":

我的理解是,Python不会在while循环中通过输入更改变量,因此打印时hiOrLo仍然为0,但我需要hiOrLo为h或l,无论我选择哪一个,我如何在保持它为函数的同时做到这一点?

您需要全局关键字:

def valid():
    while True:
        hiOrLo = input("Type 'h' for higher and 'l' for lower.")
        if hiOrLo == "h" or hiOrLo == "l":
            return 
        else:
            print("Invalid, try again")

hiOrLo = 0
valid()

print(hiOrLo)

让函数返回该值,然后保存对该值的引用

def valid():
    global hiOrLo
    while True:
        hiOrLo = input("Type 'h' for higher and 'l' for lower.")
        if hiOrLo == "h" or hiOrLo == "l":
            return 
        else:
            print("Invalid, try again")

hiOrLo = 0
valid()

print(hiOrLo)

不,您实际上不需要全局关键字。@TigerhawkT3我不同意。你可以说你不应该使用global关键字,但是你确实需要global关键字。我同意你的解决方案是一个更好的解决方案。这意味着什么?这意味着我提供的解决方案是有效的,尽管它不那么令人满意。@TigerhawkT3我想他的意思是说这是一种偏好选择。即使如此,这里的全局选择是错误的。无论输入是什么,hiOrLo都将等于,要在函数外部使用它,只需返回hiOrLo即可
def valid():
    while True:
        hiOrLo = input("Type 'h' for higher and 'l' for lower.")
        if hiOrLo == "h" or hiOrLo == "l":
            return hiOrLo
        else:
            print("Invalid, try again")

hiOrLo = valid()

print(hiOrLo)