守则是:
import random
Cards = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]
user = int(input("Number\n"))
print(Cards[user])
computer = int(input("Number\n"))
print(Cards[computer])
if Cards[user] > Cards[computer]:
    print(f"You win {user} {computer}")
else:
    print(f"You Lose {computer} {user}")产出如下:
数
11
K
数
12
一个
你赢了11 12
它的意思是说“你输了”,因为K在扑克牌之王中比代表Ace的A低。我在这里做错什么了?
发布于 2022-08-06 15:30:19
也许你应该比较一下按价值订购卡片的索引。
import random
Cards = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"]
user = int(input("Number\n"))
print(Cards[user])
computer = int(input("Number\n"))
print(Cards[computer])
if user > computer:  # Changed here
    print(f"You win {user} {computer}")
else:
    print(f"You Lose {computer} {user}")发布于 2022-08-06 15:37:24
正如@maggle所指出的,这样做的方法就是比较整数用户和计算机。
比较索引(如@puncher所述)无效,因为Cards.index("11")将返回ValueError (因为整数11不在列表卡中)。
发布于 2022-08-06 15:38:16
发生此行为是因为您比较的是字符串,而不是ints。
对于纸牌游戏,以下排序是正确的
>>> "J"<"Q"<"K"<"A" # <- PSEUDO CODE!
True但是字符串在默认情况下是按字母顺序排列的主题。
>>> "J"<"Q"<"K"<"A"
False
>>> "A"<"J"<"K"<"Q"
True因此,条件Cards[user] > Cards[computer]在字符串之间,这就是为什么输出与预期输出不同的原因。
由于“卡片”按升序排列,您只需检查user是否大于computer。这将对ints进行比较,并按您预期的方式工作。
另外,您应该验证从用户那里获得的索引对于列表的长度是有效的。有很多方法可以做到这一点。
https://stackoverflow.com/questions/73261013
复制相似问题