在'_Printer'和'int'的实例之间不支持TypeError:'> ='

时间:2018-05-29 19:53:01

标签: python-3.x

尝试编程自动售货机

我正在尝试检查输入的金额是否足够。 (products) 但它一直给我这个错误信息。 (TypeError: '>=' not supported between instances of '_Printer' and 'int'

products = {

    "A": [100, "cola"],
    "B": [100, "drink0"]

}


def coinCounter():
    print("Bitte Münzen einwerfen! / Betrag eingeben!")

    credits = int(input("Betrag: "))


def product():
    print("Bitte Produkt wählen!")

    choosedProduct = input("Produkt: ").capitalize()

    if choosedProduct in products and credits >= products[choosedProduct][0]:
        output = True
    elif choosedProduct not in products:
        print("Das Produkt existiernt nicht.")
    elif products[choosedProduct][0] >= credits:
        print("Du hast nicht genug Geld eingeworfen")

    def moneyBack(moneyBack):
        moneyBack = credits - products[choosedProduct][0]
        print("Zurück: ", moneyBack)


    def output(output, choosedProduct):
        if output == True:
            print("Das Produkt", choosedProduct[1], "wird ausgegeben...")
            output = False

    output()
    moneyBack()



def main():
    coinCounter()
    product()

main()

2 个答案:

答案 0 :(得分:2)

问题是范围之一。

credits中设置coinCounter时,此分配是该功能的本地分配,对外界不可见。为什么您的脚本不会因NameError而崩溃?因为有一个名为credits的全局内置对象,您可以调用(或打印)以查看简短的版权声明:

>>> credits
    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
    for supporting Python development.  See www.python.org for more information.

您尝试将此对象与失败的整数进行比较。

相反,让coinCounter返回点数,并在coinCounter中调用product,或在main中调用它,并将值作为参数提供给{{ 1}}:

product

答案 1 :(得分:0)

input()返回一个字符串:https://docs.python.org/3.0/library/functions.html#input

当操作或函数应用于不适当类型的对象时,会引发

" TypeError异常。关联值是一个字符串,提供有关类型不匹配的详细信息":https://docs.python.org/3/library/exceptions.html#TypeError

您无法将stringint进行比较,因此您必须将输入值转换为intint(input("Betrag: "))

`