TypeError:“>=”在“str”和“int”的实例之间不受支持。尝试将int添加到输入中不成功

2024-09-27 21:29:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看过很多类似的问题,我认为我使用的信息是正确的,在我的输入中添加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()

Tags: selfreturnvaluedefrandomintcardsace
1条回答
网友
1楼 · 发布于 2024-09-27 21:29:49

您的rank属性是描述卡的字符串,而不是数值。但是在getValue中,比较self.rank >= 10。因为self.rank是一个字符串,这是毫无意义的。我建议将self.rank设为数字,并使用一个函数将数值转换为字符串形式以供显示

我还要指出你的getRankgetValue函数是无意义的;类实例表示一张卡,调用函数在逻辑上似乎是“getter”(检索有关卡的信息),实际上在调用时永久更改卡的排名和值,忽略卡初始化时使用的值

相关问题 更多 >

    热门问题