int()的文字无效

时间:2016-10-16 17:33:37

标签: python python-3.x

我正在学习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

2 个答案:

答案 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获取前两位数并用它们来计算价格?