提问者:小点点

蟒蛇随机扑克牌生成器游戏



我目前正在尝试用 Python 创建一个程序,该程序允许使用随机函数创建一张随机卡片,带有花色和卡号。
到目前为止的代码如下所示...


import random
num1 = random.randint(1,13)
num2 = random.randint(1,4)
cardnum1 = ""
cardnum2 = ""

input ("Press the enter key to continue \n")



if True:
    if num1 == 11:
        cardnum1 = "Queen"
    elif num1 == 12:
        cardnum1 = "Jack"
    elif num1 == 13:
        cardnum1 = "King"
    elif num1 < 10:
        cardnum1 = num1
    elif num2 == 1:
        cardnum2 = "Spades"
    elif num2 == 2:
        cardnum2 = "Hearts"
    elif num2 == 3:
        cardnum2 = "Diamonds"
    elif num2 == 4:
        cardnum2 = "Clubs"

print (cardnum1, cardnum2)

如果卡号(num1)为11、12或13,则卡片将分别为杰克、王后和国王。如果变量num22等于1、2、3或4,则卡片将分别为黑桃、红桃、钻石和梅花

我这里遇到的问题是,IDLE只打印卡号,而不打印变量cardnum2,而不是同时打印卡号和花色。例如,如果num1是8,num2是Diamonds,我希望IDLE打印“9 Diamonds”,但只打印“9”。我只能选择这种方法来解决和编写程序,所以有人可以帮我清除代码并帮助我处理这些代码吗

谢谢,杰克。

< br>
更新:我可以问一下,我如何循环程序,以便当用户按下enter键时,它重复创建新的卡片?


共3个答案

匿名用户

问题出在你的大if: elif:块中:

elif num1 < 10:
    cardnum1 = num1
elif num2 == 1:
    cardnum2 = "Spades"

您想将num2单独处理为num1,所以应该是:

elif num1 < 10:
    cardnum1 = num1

if num2 == 1:
    cardnum2 = "Spades"

或者,更简单地说,使用一对字典,这是一大堆 ELIF的惯用替换:

faces = {11: "Queen", 12: "Jack", 13: "King"} # it's usually J Q K, though
cardnum1 = faces.get(num1, num1)
suits = {1: "Spades", 2: "Hearts", 3: "Diamonds", 4: "Clubs"}
cardnum2 = suits[num2]

匿名用户

import random


cards = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"] 
suits = ["Diamonds", "Hearts", "Spades", "Clubs"]

print(random.choice(cards) + " of " + random.choice(suits))

匿名用户

这里的问题是,在对< code>num1执行检查后,您继续对< code>num2的所有检查使用< code>elif。这意味着您只能输入前四个代码块中的一个。相反,为< code>num2检查启动新的< code>if语句:

if num1 == 11:
    cardnum1 = "Queen"
elif num1 == 12:
    cardnum1 = "Jack"
elif num1 == 13:
    cardnum1 = "King"
elif num1 < 10:
    cardnum1 = num1

if num2 == 1:
    cardnum2 = "Spades"
elif num2 == 2:
    cardnum2 = "Hearts"
elif num2 == 3:
    cardnum2 = "Diamonds"
elif num2 == 4:
    cardnum2 = "Clubs"

此外,如果True:,则使用是非常没有意义的,因为该代码将始终运行。