跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 请高手帮忙看段代码

请高手帮忙看段代码

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
6 帖子 3 发布者 5.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • B 离线
    B 离线
    bedon
    写于 最后由 编辑
    #1

    gw=raw_input('enter an number:')
    ggw=int(gw)
    if gw<20.5:
    if gw==ggw:
    gw=gw
    else:
    if gw-ggw>0.5:
    gw=ggw+1
    else:
    gw=ggw+0.5
    else:
    if gw==ggw:
    gw=gw
    elif gw>ggw:
    gw=ggw+1
    print 'GROSS WEIGHT:', gw

    想要实现的是 如果输入的数字大于20.5 自动无条件向上舍入取整
    如果输入的数字小于20.5 自动无条件取整到 .5

    现在每次输入整数的时候,得到的值都是+1,输入小数就报错

    Traceback (most recent call last):
    File "E:/Python/Study/hello.py", line 2, in <module>
    ggw=int(gw)
    ValueError: invalid literal for int() with base 10: '12.3'

    1 条回复 最后回复
    0
    • mrshellyM 离线
      mrshellyM 离线
      mrshelly
      写于 最后由 编辑
      #2

      你这问题描述得太成问题了.

      呵呵.只考虑实现.
      你自己优化代码吧.

      [code]

      a = '12.6'

      ret = 0.0
      b = int(float(a)*10)

      if(b>=205):
      if(int(b/10)*10<b):
      ret = int(b/10)+1
      else:
      ret = int(b/10)

      else:
      if(b>(int(b/10)*10+5)):
      ret = (int(b/10)*10+10)/10
      else:
      ret = (int(b))/10+0.5

      print ret
      [/code]

      1 条回复 最后回复
      0
      • B 离线
        B 离线
        bedon
        写于 最后由 编辑
        #3

        非常感谢!!
        直接用 int(a) 不行?

        1 条回复 最后回复
        0
        • digitalsatoriD 离线
          digitalsatoriD 离线
          digitalsatori 管理员
          写于 最后由 编辑
          #4

          我来试试:
          [code]
          gw = raw_input('please enter number:')
          try:
          x, y = gw.split('.')
          if int(y[0])>5 or int(x)>=21:
          result = str(int(x)+1)
          else:
          result = x+'.5'
          except:
          result = gw
          print 'Gross weight: %s ' % result
          [/code]

          【上海先安科技】(tony AT openerp.cn)

          1 条回复 最后回复
          0
          • B 离线
            B 离线
            bedon
            写于 最后由 编辑
            #5

            非常感谢,又学了一招 :lol

            1 条回复 最后回复
            0

            • 登录

            • 没有帐号? 注册

            • 登录或注册以进行搜索。
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 标签
            • 热门
            • 用户
            • 群组