John_Gcn 2023-05-20 16:43 采纳率: 83.3%
浏览 22
已结题

关于向上取整的问题,如何解决?

关于一个python多组输入的小问题,关于地铁票费用一个向上取整的方法,代码不完善,求指教
题目如下:
里程 票价
(05] km 2
(5
10] km 3
(1015]km 4
(15-21] km 5
(21
28] km 6
28km以上每10km增加1元
输入多组
5.3
10
30.5
输出多组
3
3
7

# 多组输入
import math
m = 0
while True:
    try:
        x = eval(input())
        if 0 < x <= 5:
            m = m + 2
            print(m)
        elif 5 < x <= 10:
            m = m + 3
            print(m)
        elif 10 < x <= 15:
            m = m + 4
            print(m)
        elif 15 < x <= 21:
            m = m + 5
            print(m)
        elif 21 < x <= 28:
            m = m + 6
            print(m)
        elif x > 28:
            if 0 < m <= 10:
                pass
            else:
                m = math.ceil((m - 28) / 10) + 6
            print(m)
    except:
        break
  • 写回答

1条回答 默认 最新

  • 创意程序员 2023-05-21 08:15
    关注

    你的程序已经实现功能,只是math.ceil表达式里面应该用x而不是m,x是里程,m是价格:
    m = math.ceil((x - 28) / 10) + 6
    并且 if 0 < m <= 10: pass else: 这些都不要,x>28时直接用上面这个表达式即可,这个表达式测试结果如下:

    >>> x=28
    >>> math.ceil((x - 28) / 10) + 6
    6
    >>> x=29
    >>> math.ceil((x - 28) / 10) + 6
    7
    >>> x=37
    >>> math.ceil((x - 28) / 10) + 6
    7
    >>> x=38
    >>> math.ceil((x - 28) / 10) + 6
    7
    >>> x=39
    >>> math.ceil((x - 28) / 10) + 6
    8
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 5月20日

悬赏问题

  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢
  • ¥15 vxworks交叉编译gcc报错error: missing binary operator before token "("
  • ¥15 JSzip压缩文件时如何设置解压缩密码