2016-11-30 2 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», либо «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

Смежные вопросы