不可排序的类型:type() > int

0 投票
2 回答
679 浏览
提问于 2025-04-17 21:49

我在写代码的时候遇到了一些麻烦。我的代码到处都是错误。现在我遇到了一个“无法比较类型”的错误。简单来说,我需要我的程序能够接受一个座位限制,然后确保售出的票数在这个限制之内。接着,我只需要计算一下票务销售带来的收入。我对Python还很陌生,所以任何帮助都非常感谢。谢谢 :)

aLimit=200

bLimit=500

cLimit=100

aPrice=20

bPrice=15

cPrice=10

ticketSold=int

def Main():

    ticketSold=int(input("How many tickets were sold? "))
    getTickets(aLimit)
    total=calcIncome(ticketSold,aPrice)
    print("The theater generated this much money "+str(total))

def getTickets(limit):

        ticketsValid(ticketSold,limit)
    return ticketSold


def ticketsValid(ticketSold,limit):

    while (ticketSold>limit or ticketSold<0):
        print ("ERROR: There must be tickets less than"+str(limit)+"and more than 0")
        return False

    return True



def calcIncome(ticketSold,price):  
    return ticketSold*price


Main()

2 个回答

0

你的问题似乎和变量的作用域有关。没错,你有一个叫'ticketSold'的变量,它是在全局范围内的,但它和Main范围内同名的变量并不是一个东西。你必须声明这个变量为全局变量,才能在全局使用它。

def Main():
  global ticketSold
  ticketSold=int(input("How many tickets were sold? "))
  …

如果你不这样做,你的全局ticketSold将保持你之前赋给它的值。也就是说,它是一个int类型的对象。

2

ticketSold 不是一个数字,而是一个叫 int 的类型。在 Python 里,类型也是对象哦!你可以像对待其他对象一样给它赋值。

你可能以为 Main 里的 input 会替换掉这个值,但其实它是在函数内部创建了一个新的值。你需要在 Main 里使用 global ticketSold,这样才能得到你想要的结果。

我建议考虑重新设计一下,使用返回值而不是全局变量。

撰写回答