我正在学习python,我正在尝试编写一个计算器,用于比较黄油的价格,计算百分比差异,以及哪一个具有100克的最低价格。
def procenta(x,y):
vysledek = (y-x)/x * 100 # (b-a) : a * 100
return round(vysledek, 2)
tesco = float(input("Zadejte cenu masla v Tescu: "))
tesco_g = int(input("Zadejte gramaz v Tescu: "))
lidl = float(input("Zadejte cenu masla v Lidlu: "))
lidl_g = int(input("Zadejte gramaz v Lidlu: "))
kaufland = float(input("Zadejte cenu masla v Kauflandu: "))
kaufland_g = int(input("Zadejte gramaz v Kauflandu: "))
cena_tesco = int(tesco)/(tesco_g[:2]/10)
cena_lidl = int(lidl)/(lidl_g[:2]/10)
cena_kaufland = int(kaufland)/(kaufland_g[:2]/10)
回溯:
Traceback (most recent call last):
File "python", line 6, in <module>
ValueError: invalid literal for int() with base 10: ''
不要担心其他文本的含义,它是我的母语,最终可以翻译。但是,如果我将其更改为:
cena_tesco = float(tesco/(tesco_g[:2]/10))
我得到TypeError float object is not subscriptable
。
答案 0 :(得分:0)
您已将event.stopPropagation();
定义为整数,方法是将其放在第5行。您的TypeError告诉您tesco_g
语法不起作用,因为您的类型没有索引。要重新构建解释器正在执行的操作:
它的内容为varname[:2]
2.它检查:tesco_g[:2]
的类型是否有索引到第二个元素的方法?
3.它找不到该方法,并抛出错误。
tesco_g
行应该做什么?
答案 1 :(得分:0)
如果我将其付诸实施,将会打印出来:
print("Tesco is the cheapest shop with price of",*cena_tesco*,"for 100 grams of butter.")
它应该计算100克黄油的价格。 我应该怎么处理tesco_g [:2]所以从tesco_g获取前两位数并用它们来计算价格?