我有一个作业,其中程序随机选择花色和牌值 (1-13)(11、12、13 应该是 jack 皇后和国王),然后用户应该猜它。如果猜测牌值太高或太低,该程序还应该在猜测牌值时做出响应。我让它工作,除非程序猜测 11 或 12 或 13 或 1(ace)。我无法将值分配给面部卡片的单词,以便用户可以猜测卡片的面部,程序会将其检测为一个值。顺便说一句,这是 python 。非常感谢任何提供帮助的人。如果有更简单的方法来解决这个问题,我也很想学习。(这是我更新的代码,现在我收到错误)说的 Guess_number.lower().strip()) AttributeError: 'NoneType' 对象没有属性 'lower'
import random
SUITS = ("D", "H", "C", "S")
suit = random.choice(SUITS)
card_names = random.randint( 1,13)
card_names = {'ace': 1, 'jack': 11, 'queen': 12, 'king': 13}
for i in range(2, 11):
card_names[str(i)] = i
guessCount = 0
Guess_Suit = input("Start by guessing the Suit:")
guessCount = guessCount + 1
while guessCount < 9:
Guess_Suit = Guess_Suit.upper()
guessCount = guessCount + 1
if Guess_Suit == suit:
print("Correct!")
break
elif Guess_Suit != suit:
print('Wrong')
Guess_Suit = input("Guess the Suit again: ")
Guess_number = input("Now Guess the card number or name of the face card:")
Guess_number = card_names.get(Guess_number.lower().strip())
guessCount = guessCount + 1
while guessCount < 9:
Guess_number = card_names.get(Guess_number.lower().strip())
if Guess_number > number:
print("The card you picked is too high")
Guess_number = input("Pick another one")
guessCount = guessCount + 1
Guess_number = card_names.get(Guess_number.lower().strip())
if Guess_number < number:
print("The card you picked is too low")
Guess_number = input("Pick another one")
guessCount = guessCount + 1
Guess_number = card_names.get(Guess_number.lower().strip())
elif Guess_number == number:
print("THATS IT YOU WON")
break
请您参考如下方法:
创建一个字典,将卡片名称映射到相关号码,例如:
card_names = {'ace': 1, 'jack': 11, 'queen': 12, 'king': 13}
for i in range(2, 11):
card_names[str(i)] = i
然后将所有 Guess_number = int(Guess_number) 行替换为以下内容:
Guess_number = card_names.get(Guess_number.lower().strip())
如果在此之后 Guess_number 为 None,则表示他们提供了无效值,因为未找到卡名或提供的数字太低/太高。
编辑: 解释可能不够清楚,这里是包含我建议的更改的完整代码:
import random
SUITS = ("D", "H", "C", "S")
suit = random.choice(SUITS)
number = random.randint( 1,13)
card_names = {'ace': 1, 'jack': 11, 'queen': 12, 'king': 13}
for i in range(2, 11):
card_names[str(i)] = i
guessCount = 0
Guess_Suit = input("Start by guessing the Suit: ")
guessCount = guessCount + 1
while guessCount < 9:
Guess_Suit = Guess_Suit.upper()
guessCount = guessCount + 1
if Guess_Suit == suit:
print("Correct!")
break
elif Guess_Suit != suit:
print('Wrong')
Guess_Suit = input("Guess the Suit again: ")
Guess_number = input("Now Guess the card number or name of the face card:")
Guess_number = card_names.get(Guess_number.lower().strip())
guessCount = guessCount + 1
while guessCount < 9:
if Guess_number is None:
print("The card you picked is invalid")
Guess_number = input("Pick another one: ")
Guess_number = card_names.get(Guess_number.lower().strip())
guessCount = guessCount + 1
elif Guess_number == number:
print("THATS IT YOU WON")
break
else:
print('Wrong')
Guess_number = input("Pick another one: ")
Guess_number = card_names.get(Guess_number.lower().strip())
guessCount = guessCount + 1
