Я искал и об этом уже много ответил, но в основном это связано с ошибками версии. Я проверил версию Python (это 3.4.2), но все равно возвращает ошибку.NameError: имя '' не определен?
Код ж/ошибки:
import random
def start():
rannum = random.randint(0, 20)
inpnum = int(input('Please enter a number between 0 and 20: '))
calc()
def loop():
inpnum = int(input('Please enter a number between 0 and 20: '))
calc()
def calc():
if inpnum > rannum:
print('The number you entered is too high.')
loop()
if inpnum < rannum:
print('The number you entered is too low.')
loop()
if inpnum == rannum:
print('Congratulations! You guessed the number!')
input('')
start()
Это возвращает код ошибки:
Traceback (most recent call last):
File "guessthenumber.py", line 26, in <module>
start()
File "guessthenumber.py", line 6, in start
calc()
File "guessthenumber.py", line 14, in calc
if inpnum > rannum:
NameError: name 'inpnum' is not defined
Я пытался исправить это сам и изменил его выглядеть следующим образом:
import random
def loop():
inpnum = int(input('Please enter a number between 0 and 20: '))
calc()
def calc():
rannum = random.randint(0, 20)
inpnum = int(input('Please enter a number between 0 and 20: '))
if inpnum > rannum:
print('The number you entered is too high.')
loop()
if inpnum < rannum:
print('The number you entered is too low.')
loop()
if inpnum == rannum:
print('Congratulations! You guessed the number!')
input('')
calc()
Он работает, но он продолжает делать новый номер (я думаю, что знаю, почему, rannum = random.randint (0, 20) продолжает составлять новый номер каждый время), и он запрашивает у вас номер ввода дважды (потому что он уже запрашивает один в loop(), но делает это снова в calc(), я думаю), поэтому вы должны случайно догадываться, пока не получите его правильно, потому что он постоянно меняет каждый Угадай.
Для меня это выглядит как полный код Python. Кто-нибудь еще знает, что делать здесь?
Какая строка 26? –
'inpnum' никогда не определяется в' calc', почему вы удивлены? Сделайте это явным параметром. – jonrsharpe
У вас возникла проблема, связанная с лексической сферой. Вы должны рассмотреть передачу 'inpnum' в качестве аргумента' calc'. например "def calc (inpnum):'. –