我已经看过很多类似的问题,我认为我使用的信息是正确的,在我的输入中添加int,但我仍然收到相同的错误。有人能帮忙吗
import random
class Cards:
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
self.value = 1
def getRank(self):
ranks = ["Ace", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight","Nine","Ten","Jack", "Queen", "King"]
self.rank = random.choice(ranks)
return self.rank
def getSuit(self):
suits = ["Clubs", "Hearts", "Spades", "Diamonds"]
self.suit = random.choice(suits)
return self.suit
def getValue(self):
if self.rank >= 10:
return self.rank
else:
return 10
def __str__(self):
return (self.rank, "of", self.suit)
def main():
n = int(input("How many cards would you like to see? "))
for i in range(1, n+1):
ranks = ["Ace", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight","Nine","Ten","Jack", "Queen", "King"]
suits = ["Clubs", "Hearts", "Spades", "Diamonds"]
cardhand = Cards(random.choice(ranks), random.choice(suits))
print ("The", cardhand, "has a Blackjack value of", cardhand.getValue())
main()
您的
rank
属性是描述卡的字符串,而不是数值。但是在getValue
中,比较self.rank >= 10
。因为self.rank
是一个字符串,这是毫无意义的。我建议将self.rank
设为数字,并使用一个函数将数值转换为字符串形式以供显示我还要指出你的
getRank
和getValue
函数是无意义的;类实例表示一张卡,调用函数在逻辑上似乎是“getter”(检索有关卡的信息),实际上在调用时永久更改卡的排名和值,忽略卡初始化时使用的值相关问题 更多 >
编程相关推荐