Python嵌套if-else只执行else

时间:2016-12-07 15:01:56

标签: python python-2.7 if-statement nested

我有这个练习,计算发送一个小包裹的费用。 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控制台时,我只得到最后的其他语句。

5 个答案:

答案 0 :(得分:4)

weight投射到int,weight = int(weight)。现在它是一个字符串,与1000相比,它总是评估为False

答案 1 :(得分:2)

首先,你有压痕问题。二,您正在将字符串与整数进行比较。然后,比较......

>>> (350 - 300) / 100
0
>>> (350 - 300) / float(100)
0.5

您应自行检查,round(0) = 0round(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())

它将解决所有问题。