求解Python 货物托运收费(循环)问题

问题描述

img

img

我的代码

w = eval(input())
z = input()
while z !='n' and z != 'N':
    if w<=50:
        p = 0.5*w
    else:
        P = (w-50)*0.6+25
    print('货物重量:{} 收费:{}'.format(w,p))
    w = eval(input())
    z = input()
else:
    if w<=50:
        p = 0.5*w
    else:
        P = (w-50)*0.6+25
    print('货物重量:{} 收费:{}'.format(w,p))
    w = eval(input())
    z = input()

输出结果存在问题
超过w>50以后没有执行另外一个分支

img

你的p不是一个p,小于50的你用了小写p,大于50的你用了大写p。。。。

w = eval(input())
z = input()
while z !='n' and z != 'N':
    if w<=50:
        p = 0.5*w
    else:
        p = (w-50)*0.6+25
    print('货物重量:{} 收费:{}'.format(w,p))
    w = eval(input())
    z = input()
else:
    if w<=50:
        p = 0.5*w
    else:
        p = (w-50)*0.6+25
    print('货物重量:{} 收费:{}'.format(w,p))
    w = eval(input())
    z = input()


第7行变量大P改成小p,就可以了
代码:

def run():
    w = eval(input())
    z = input()
    while z != 'n' and z != 'N':
        if w <= 50:
            p = 0.5 * w
        else:
            p = (w - 50) * 0.6 + 25
        print('货物重量:{} 收费:{}'.format(w, p))
        w = eval(input())
        z = input()
    else:
        if w <= 50:
            p = 0.5 * w
        else:
            P = (w - 50) * 0.6 + 25
        print('货物重量:{} 收费:{}'.format(w, p))
        w = eval(input())
        z = input()

结果:

img