Python中list[]的定义到底是什么?
怪我咯
怪我咯 2017-04-18 09:12:59
[Python讨论组]

最近在尝试编一个编译器,但是在识别四则运算上出了问题,相关代码如下:


A的出处:

发现被减数o1每次都会“吃掉”o2,所以出现了错误,截图如下:

请问这是为什么,是否是因为代码中
部分导致o2的第一位被忽略?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
伊谢尔伦

你的代碼看得出來 Python 還沒熟練, 不過沒關係, 我們先從這個問題下手, 我稍微測試了一下你的 code:

def compute(exp):
    o1 = ''
    o2 = ''
    for c in exp:
        if c != '-':
            if not '-' in list(exp)[:list(exp).index(c)]:
                o1 = o1 + c
            else:
                o2 = o2 + c
    print(o1)
    print(o2)
    return int(o1)-int(o2)

if __name__ == '__main__':
    exp = input('-->')
    result = compute(exp)

結果:

-->1-1 
11

Traceback (most recent call last):
  File "x.py", line 16, in <module>
    result = compute(exp)
  File "x.py", line 12, in compute
    return int(o1)-int(o2)
ValueError: invalid literal for int() with base 10: ''

你發現了嗎? o1 跟 o2 收集的不對

先丟三個小提示:

  1. string 不必先轉成 list 才能問 in ( if b in A 就可以了)

  2. print(int(o1)-int(o2)) 應該要拿到外一層 (收集完畢才運算)

  3. lst.index(x) 總是返回 lst 中第一個 x 出現的位置


我回答過的問題: Python-QA

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号