所以我需要做一个"游戏"用户询问是否要选择卡的情况,如果是,则返回随机卡。像这样的东西:
>>>selectCard()
Would you like to draw a random card? (yes/no)
The card you got is: 8 of hearts
Would you like to draw a random card? (yes/no)
>>>yes
The card you got is: Ace of diamonds
Would you like to draw a random card? (yes/no)
>>>no
到目前为止,我有这个,但我被困住了,不知道如何完成它
def selectCards():
cardranks = ['Ace',1,2,3,4,5,6,7,8,9,'Jack','Queen','King','Ace',1,2,3,4,5,6,7,8,9,'Jack','Queen','King','Ace',1,2,3,4,5,6,7,8,9,'Jack','Queen','King','Ace',1,2,3,4,5,6,7,8,9,'Jack','Queen','King']
cardsuits = ['of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Clubs','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Diamonds','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Hearts','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades','of Spades']
shuffle(cardranks)
shuffle(cardsuits)
for a,b in zip(cardranks,cardsuits):
response = (input ('Would you like to draw a random card? (yes/no)'))
if response == yes:
return (a,b)
当我运行这个程序时,它说肯定没有定义,因此我不知道如何继续。
谢谢
答案 0 :(得分:1)
输入传递一个字符串,因此您必须检查是否收到字符串'yes'而不仅仅是。是的不是价值或变量。
最佳实践的细节:我喜欢你给出好的变量名,但是响应用s拼写;)
答案 1 :(得分:0)
问题在于,当您检查响应(拼写错误的响应错误)是否等于是时,您将它与未定义的变量“是”进行比较,您需要做的是:
#The '.upper()' bit changes the response string to uppercase.
if response.upper() == 'YES': #Yes must be in quotes to be a string comparison.
print('Its Working!') #Prints out Its Working! to the Python IDE.
答案 2 :(得分:0)
您需要将yes
括在引号中:'yes'
- 因为现在您正在告诉Python解释器将其与变量中包含的值进行比较 yes
而不是文字字符串 'yes'
。通过将response
转换为小写来使检查不区分大小写也是一个好主意:
response = input ('Would you like to draw a random card? (yes/no)')
if response.lower() == 'yes':
# Return the card
然后您的代码还有一些其他问题:
zip(cardranks,cardsuits)
和cardranks
之后,cardsuits
不会给你一个有效的,正常的套牌 - 你最终可能会得到一个有4个黑桃王牌而没有任何其他王牌的套牌适合例如。更好的解决方案是:
# All possible ranks
cardranks = ['Ace','1','2','3','4','5','6','7','8','9','Jack','Queen','King']
# All possible suits
cardsuits = ['of Clubs','of Diamonds','of Hearts','of Spades']
# The complete deck
deck = list(itertools.product(cardranks, cardsuits))
# Shuffle the deck
random.shuffle(deck)
# Draw a random card from the deck (the deck doesn't need to be shuffled before)
rank, suit = random.choice(deck)