【问题标题】:Unsupported Operand Types using pop()使用 pop() 的不支持的操作数类型
【发布时间】:2020-07-27 11:51:53
【问题描述】:

我正在尝试让我输入我的杂货的价值,它会像收银机一样给我小计,特别是使用pop() 函数。但是,我的代码总是在subtotal = subtotal + purchase_amounts.pop() 返回一个操作数错误。我没有正确地将值更改为int

purchase_amounts = []
price = []
subtotal = 0

while price != "done":
    price = input("How much did groceries cost? If done, type 'done'")
    if price != "done":
        int(price)
        (purchase_amounts.append(price))


print(purchase_amounts)

while purchase_amounts != [ ]:
    subtotal = subtotal + purchase_amounts.pop()


print(subtotal)

Traceback(最近一次调用最后一次): 第 16 行,在 subtotal = subtotal + purchase_amounts.pop() TypeError: unsupported operand type(s) for +: 'int' and 'str'

【问题讨论】:

  • 请将完整的错误回溯添加到您的问题中。

标签: python python-3.x


【解决方案1】:

只需将int(price) 更改为price = int(price)

【讨论】:

    【解决方案2】:

    代替:

        int(price)
        (purchase_amounts.append(price))
    

    你应该有:

        purchase_amounts.append(int(price))
    

    int 返回 str 到 int 转换的结果,不会就地更改其参数。哦,还有这个:

    while purchase_amounts != [ ]:
    

    应该改为:

    while purchase_amounts:
    

    – 一个非空列表是真实的...

    【讨论】:

    • 我同意第一点,但while purchase_amounts != [ ]while purchase_amounts 都完成了相同的任务。为什么使用哪一个很重要?
    • @anon 避免冗长,使代码更难理解。
    • 但对我来说,它们都同样容易理解。事实上,刚接触编程的人可能会发现第二个选项更难理解,因为他们不知道空列表等于 Python 中的 False。
    • @Anon 好吧,我们假设这是个人喜好问题,但也有性能问题......
    • 好的,我愿意就这样。谢谢!
    猜你喜欢
    • 2021-08-17
    • 2017-07-15
    • 2020-02-29
    • 2011-03-08
    • 2016-11-28
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多