当随机选择硬币和卡片时程序不工作

2024-04-25 02:04:57 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我是非常新的编码,我不知道为什么这不起作用!我们必须制作一个程序,用户要么选择一个硬币,然后显示一个随机抛硬币的结果,要么他们选择一张卡片,然后随机显示一套卡片套装和号码。它一直在说 回溯(最近一次呼叫):

 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

这是我的代码:

^{pr2}$

正如你所见,我不是最擅长编码,但有什么帮助吗?同样,当我输入'硬币'它工作,但仍然计算一个随机卡号,当我键入'卡'它给我上述错误。另外,我还没有为随机套装添加代码。在

我添加了一个人代码,现在它工作了!!!不过,当我键入“硬币”时,它也会得到一个随机卡号。在

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.")

Tags: or代码number编码if硬币randomcard
3条回答

您对r的赋值超出了初始if-on选择的范围。在

实际上,您是在声明r之前调用if r == 1。这导致了你的错误。在

请记住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.")

正如错误消息所说:

local variable 'r' referenced before assignment

我想这已经足够让你看到错误了。在

通常,如果运行if r == 1:,您将得到NameError: name 'r' is not defined,但是Python认为{}是一个局部变量,如果它看到类似{}的赋值,那么抛出{}。在

您的程序有许多错误,对于您询问的错误,更正是:

import random

if Choice == "Coin":  
    r = random.randint(1,2)
    if r == 1:
        print("Heads!")
    elif r == 2:
        print("Tails!")

你想要的是在

if Choice == "Coin":

行。在

像这样,每次运行程序时都要检查r==(1)。如果你写“卡片”,你想跳过它。在

编辑者抱怨的是,他不做作业

^{pr2}$

行,因为如果选择不是“硬币”,他会跳过if

然后他试着把它和(1)做比较,但他不能,因为他没有做作业。在

相关问题 更多 >