2016-11-30 8 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) 

whileループ中にPythonが "input"を通して変数を変更しないので、hiOrLoは "0"になりますが、hiOrLoは "h"または "どのようなものを選んでも、どのように機能させているのですか?あなたはグローバルキーワード必要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