2016-11-30 48 views
0
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) 

我的理解是,Python不會在while循環中通過「輸入」來更改變量,所以打印時hiOrLo仍然是「0」,但我需要hiOrLo或者是「h」或「 l「,無論選擇哪一個,我該怎麼做,同時保持它的功能?如何讓while循環指定一個變量?

+0

hiOrLo將等於不管輸入,使用該功能外,你可以簡單地'返回hiOrLo' – Eric

回答

7

具備的功能返回該值,則參考保存到它。

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) 
0

需要全球關鍵字:

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) 
+2

不,你實際上並不需要'global'關鍵字。 – TigerhawkT3

+0

@ TigerhawkT3我不同意。你可以說你不應該使用'global'關鍵字,但你確實需要'global'關鍵字。我同意你的解決方案是一個更好的解決方案。 –

+1

這甚至意味着什麼? – TigerhawkT3