嗨,我对编码很新,我不知道为什么这不起作用!我们必须制作一个程序,用户要么选择硬币并且显示随机硬币投掷结果,要么他们选择卡片并随机显示卡片套装和号码。它一直在说 回溯(最近一次调用最后一次):
File "\\fs1epa\intake2010data$\cresm011.311\My Documents\Year 11\Computer Science\Python Practise question\Card_or_coin.py", line 30, in <module>
program()
File "\\fs1epa\intake2010data$\cresm011.311\My Documents\Year 11\Computer Science\Python Practise question\Card_or_coin.py", line 9, in program
if r == (1):
UnboundLocalError: local variable 'r' referenced before assignment
这是我的代码:
def program():
Choice = input("Pick either 'Card' or 'Coin' ")
if Choice == "Coin":
import random
r = random.randint(1,2)
if r == (1):
print ("Heads!")
elif r == (2):
print ("Tails!")
if Choice == ("Card"):
import random
card_number = random.randint(1,13)
if card_number == 1:
print("Ace")
elif card_number == 11:
print("Jack")
elif card_number == 12:
print("Queen")
elif card_number == 13:
print("King")
else:
print(card_number)
flag = True
while flag:
program()
flag = input('Would you like to run the program again? [yes/no]') == 'yes'
print ("The program will now terminate.")
正如你所看到的,我不是最好的编码,但任何帮助?此外,当我输入'Coin'时,它仍然可以工作,但仍会计算随机卡号,当我输入'Card'时,它会给我上述错误。此外,我还没有为随机套装添加代码。
我添加了一个人员代码,现在它可以工作!但是,当我输入'Coin'时,它也会获得随机卡号。
def program():
Choice = input("Pick either 'Card' or 'Coin' ")
if Choice == "Coin":
import random
r = random.randint(1,2)
if r == (1):
print ("Heads!")
elif r == (2):
print ("Tails!")
if Choice == "Card":
import random
card_number = random.randint(1,13)
if card_number == 1:
print("Ace")
elif card_number == 11:
print("Jack")
elif card_number == 12:
print("Queen")
elif card_number == 13:
print("King")
else:
print(card_number)
flag = True
while flag:
program()
flag = input('Would you like to run the program again? [yes/no]') == 'yes'
print ("The program will now terminate.")
答案 0 :(得分:1)
你想要的是打算将if和elif置于
之下if Choice == "Coin":
线。
像这样,你通过程序检查r ==(1)每次运行。如果你写“卡片”,你想跳过它。
什么是编译器抱怨的是,他不做任何分配
r = random.randint(1,2)
行,因为如果选择不是“硬币”,他会跳过if。
然后他试图将它与(1)比较,他不能,因为他没有做任务。答案 1 :(得分:1)
正如错误消息所说:
本地变量&#39; r&#39;在分配前引用
我认为这将是您查看错误的足够信息。
如果您运行NameError: name 'r' is not defined
,通常会获得if r == 1:
,但如果认为r
的分配r = random.randint(1,2)
,则认为UnboundLocalError
是一个局部变量,因此抛出import random
if Choice == "Coin":
r = random.randint(1,2)
if r == 1:
print("Heads!")
elif r == 2:
print("Tails!")
1}}。
您的程序有很多错误,对于您提出的问题,更正是:
{{1}}
答案 2 :(得分:1)
您对r
的分配超出了您在初选中的选择范围。
基本上,您在声明if r == 1
之前调用r
。这导致了您的错误。
请记住,Python使用空格,因此您需要相应地缩进。
我已经为您重新编写(添加了2个缩进)代码并进行了测试。
def program():
Choice = input("Pick either 'Card' or 'Coin' ")
if Choice == "Coin":
import random
r = random.randint(1,2)
if r == (1):
print ("Heads!")
elif r == (2):
print ("Tails!")
if Choice == ("Card"):
import random
card_number = random.randint(1,13)
if card_number == 1:
print("Ace")
elif card_number == 11:
print("Jack")
elif card_number == 12:
print("Queen")
elif card_number == 13:
print("King")
else:
print(card_number)
flag = True
while flag:
program()
flag = input('Would you like to run the program again? [yes/no]') == 'yes'
print ("The program will now terminate.")
答案 3 :(得分:0)
谢谢大家的帮助。我有它的工作,我非常感激!我希望我不必再次寻求帮助,我将能够像我一样帮助其他人。
完成的计划:
def program():
Choice = input("Pick either 'Card' or 'Coin' ")
if Choice == "Coin":
import random
r = random.randint(1,2)
if r == (1):
print ("Heads!")
elif r == (2):
print ("Tails!")
if Choice == "Card":
import random
card_number = random.randint(1,13)
if card_number == 1:
print("Ace")
elif card_number == 11:
print("Jack")
elif card_number == 12:
print("Queen")
elif card_number == 13:
print("King")
else:
print(card_number)
flag = True
while flag:
program()
flag = input('Would you like to run the program again? [yes/no] ') == 'yes' , 'Yes'
print ("The program will now terminate.")
糟糕,这是我的缩进,当我看到它时,我没有意识到,谢谢大家的帮助。