Python 随机扑克牌生成游戏
我现在正在尝试用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,那么这张卡片的花色就分别是黑桃、红心、方块和梅花。
我遇到的问题是,程序只打印了卡片的数字,而没有把花色一起打印出来。比如,如果num1是8,num2是方块,我希望程序打印“9 方块”,但它只打印了“9”。我只能用这种方式来解决和编写程序,所以有人能帮我理清代码吗?
谢谢,Jack。
更新:我能问一下,怎么让程序循环,这样用户按下回车键时就能不断生成新卡片?
6 个回答
不要这样做:
elif num1 < 10:
cardnum1 = num1
elif num2 == 1:
cardnum2 = "Spades"
试试这样:
else:
cardnum1 = num1
if num2 == 1:
cardnum2 = "Spades"
因为你在处理 num1
和 num2
的逻辑时用了 elif
,所以只能设置其中一个。你需要两个独立的 if
测试。
随着你不断学习,你会发现代码中还有其他地方可以简化,正如其他回答所指出的那样。
这段代码可能看起来有点难看,因为我把很多变量都去掉了,直接放在了input()里面,但这样写比较简洁。
from random import randint,choice
def main():
suits = ["Spades","Hearts","Diamonds","Clubs"]
user_input = input(str(randint(1,13)) + " of " + str(choice(suits)) + ". To run again press [ENTER] key.")
main() if user_input == "" else exit()
if __name__ == "__main__":
main()
这里的问题是,在检查完 num1
之后,你继续用 elif
来检查 num2
。这样的话,你只会进入前四个代码块中的一个。相反,应该为 num2
的检查开始一个新的 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"
另外,使用 if True:
是没有意义的,因为那段代码总是会被执行。
这段内容是关于编程的问题,可能涉及到一些代码或技术细节。为了让你更容易理解,我会用简单的语言来解释。
首先,代码块
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))
可能包含了一些示例代码或者特定的编程语法。通常,这些代码是用来展示如何解决某个问题或者实现某个功能的。
如果你对这些代码有疑问,或者不太明白它们的意思,可以尝试逐行阅读,看看每一行在做什么。通常,代码的每一部分都有它的作用,比如定义变量、执行操作或者输出结果。
记住,编程就像学习一种新的语言,刚开始可能会觉得有点难,但多练习就会慢慢变得熟悉。
问题出在你那一大段 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]