我有这个练习,计算发送一个小包裹的费用。 Te邮局对前300克收取R5,之后每100克加收R2(四舍五入),最大重量为1000克。
weight = raw_input("What are the weight of you parcel: ")
if weight <= 1000:
if weight <= 300:
cost = 5
print("You parcel cost: " + cost)
else:
cost = 5 + 2 * round((weight - 300)/ 100)
print("You parcel cost: " + cost)
else:
print("Maximum weight for amall parcel exceeded.")
print("Use large parcel service instead.")
当我执行IDLE控制台时,我只得到最后的其他语句。
答案 0 :(得分:4)
将weight
投射到int,weight = int(weight)
。现在它是一个字符串,与1000相比,它总是评估为False
。
答案 1 :(得分:2)
首先,你有压痕问题。二,您正在将字符串与整数进行比较。然后,比较......
>>> (350 - 300) / 100
0
>>> (350 - 300) / float(100)
0.5
您应自行检查,round(0) = 0
和round(0.5) = 1
。
这是应该解决问题的代码
weight = int(raw_input("What are the weight of you parcel: "))
if weight <= 1000:
if weight <= 300:
cost = 5
else:
cost = 5 + 2 * round((weight - 300) / float(100))
print("Your parcel cost: {}".format(cost))
else:
print("Maximum weight for small parcel exceeded.")
print("Use large parcel service instead.")
答案 2 :(得分:1)
weight
在第1行变为string type
,然后在if statement
中与weight
进行比较int
。通过将用户输入转换为int
将您的第一行更改为:
weight = int(raw_input("What are the weight of you parcel: "))
此外,如果您使用的是python3,我会将raw_input
更改为input
答案 3 :(得分:0)
float(对整数使用from django.core import serializers
listset = serializers.serialize("json", TheaterBase.objects.all())
而不是input()
,并且不要尝试连接字符串和整数。
以下代码有效:
raw_input()
答案 4 :(得分:0)
通过
进行数学运算时,将变量权重转换为浮点数weight=float(input())
它将解决所有问题。