lihaoweil 发表于 2022-6-2 15:03

python萌新求助大佬,判断输入值返回对应结果的问题

# 请输入产品重量KG
def zl():
    zl = input('请输入产品重量KG:')
    return zl


def fbawc():
    if 0 < float(zl()) < 1:
      return 5
    elif 1 <= float(zl()) < 3:
      return 10
    else:
      print('超出最大配送重量')


if __name__ == '__main__':
    print(f'物流运费为:{fbawc()}元')

代码如上:上面代码实际运行的时候会反复要求你输入重量两次(几个IF判断要求你输入几次),我的目的是要求循环里面判断输入的值符合哪个区间就返回对应的值,只需要输入一次重量就可以了。

big冰 发表于 2022-6-2 15:22


def fbawc():
zl = input('请输入产品重量KG:')
    if 0 < float(zl) < 1:
      return 5
    elif 1 <= float(zl) < 3:
      return 10
    else:
      print('超出最大配送重量')


if __name__ == '__main__':
    print(f'物流运费为:{fbawc()}元')

云在天 发表于 2022-6-2 15:25

问题原因:调用两次zl函数
解决方案:新建一个变量储存zl函数的返回值
修正代码:
# 请输入产品重量KG
def zl():
    zl = input('请输入产品重量KG:')
    return zl


def fbawc():
    zl_value = zl()
    if 0 < float(zl_value) < 1:
      return 5
    elif 1 <= float(zl_value) < 3:
      return 10
    else:
      print('超出最大配送重量')


if __name__ == '__main__':
    print(f'物流运费为:{fbawc()}元')

灿烂的小居 发表于 2022-6-2 15:27

你用一个变量暂存一下input输入zl的方法值啊,fbawc返回结果
# 请输入产品重量KG
def zl():
    zl = input('请输入产品重量KG:')
    return zl


def fbawc():
    input_value = float(zl())
    if 0 < input_value < 1:
      return 5
    elif 1 <= input_value < 3:
      return 10
    else:
      print('超出最大配送重量')
      return -1


if __name__ == '__main__':
    print(f'物流运费为:{fbawc()}元')

Cool_Breeze 发表于 2022-6-2 15:43

调用一次就好了,你这样写一次就调用函数一次。

唔嗳破解 发表于 2022-6-2 16:46

zl()函数调用两次,肯定会叫你输入两次啊。在if前调用一次就得了。

lihaoweil 发表于 2022-6-5 00:22

Cool_Breeze 发表于 2022-6-2 15:43
调用一次就好了,你这样写一次就调用函数一次。

问题已经解决了,多谢

lihaoweil 发表于 2022-6-5 00:23

唔嗳破解 发表于 2022-6-2 16:46
zl()函数调用两次,肯定会叫你输入两次啊。在if前调用一次就得了。

问题已经解决了,多谢
页: [1]
查看完整版本: python萌新求助大佬,判断输入值返回对应结果的问题