鱼C论坛

 找回密码
 立即注册
查看: 1033|回复: 10

[已解决]为什么我要重新发明轮子?我是不是傻?。。。求大神指点。

[复制链接]
发表于 2019-4-29 20:18:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
讲一下我的傻X经历:
        昨天一天突然心血来潮,想着wxpython这个三方库的功能都快忘完了,做个东西加强一下记忆吧,然后我就想到了做一个简单的计算器。然后我就开始动手了。然后我就碰到了一堆问题。然后就是我的傻X经历。
。。。。。。。。。
算了还是不说没用的吧

计算式的问题上,我想着很简单,获取到用户输入的数学式子(当然你获取到的肯定是字符串,没办法直接计算的),再根据加减乘除的优先级,把符号两边的数字转换成整型或浮点型计算一下就行了,这有什么难的。
然后我就开始动手了,







此处省略120多行代码。
终于让我搞定了加减乘除(比如:123+456-123*2+789/8+2**10)这样的计算都没有问题,
然鹅,当我一点一点测试的时候发现,我擦,123+456-789竟然报错,啊,疯了,都写了120行代码了竟然还有出现负数的情况没有搞定。




此处省略N多思考的时间。
然鹅,随着思考的深入,我决定放弃,因为这他妈的不科学呀,一个这么简单的计算器竟然要耗费这个大的精力和代码量,我开始怀疑我的做法哪里出问题。




此处省略N多思考BAT那些大佬们都是怎么解决问题的不可描述的内容。
突然,灵光一闪,为什么我不百度一下看看别人都是怎么处理计算字符串数学式的。




此处为百度中。

what fuck

eval()这个内置函数可以实现??????????????????
(内心独白:你个傻X,这都不知道,怪不得累死你)
为什么?为什么?为什么我动手前不搜索一下看看。





此处为反思我为什么要重新发明轮子。


各位众神大佬,依你们过来者的身份给小弟普及普及怎样能避免重新发明轮子的毛病呗


下面是码出的代码效果,ps:并不是最终的版本,是我无能为力的版本的部分的片段的图片。
游客,如果您要查看本帖隐藏内容请回复
最佳答案
2019-4-29 21:32:06
结果就是
你想发明轮子,那就发明轮子(当然是以学习为目的的),你不想发明轮子,那就使用现成的轮子

但是你在不想发明轮子的时候也需要知道有现成的轮子可用,所以你一不小心就发明了轮子
所以,如果你不想发明轮子,那就在遇到问题时,先百度一段时间,看看有没有现成的轮子可用,如果你想发明轮子,那就以学习为目的的去发明轮子吧
^_^
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-29 20:44:19 | 显示全部楼层
当锻炼了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 20:45:11 | 显示全部楼层
计算器 还是微软自带的好 不会错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 21:25:17 | 显示全部楼层
学习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 21:32:06 | 显示全部楼层    本楼为最佳答案   
结果就是
你想发明轮子,那就发明轮子(当然是以学习为目的的),你不想发明轮子,那就使用现成的轮子

但是你在不想发明轮子的时候也需要知道有现成的轮子可用,所以你一不小心就发明了轮子
所以,如果你不想发明轮子,那就在遇到问题时,先百度一段时间,看看有没有现成的轮子可用,如果你想发明轮子,那就以学习为目的的去发明轮子吧
^_^
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-29 21:38:46 | 显示全部楼层
人造人 发表于 2019-4-29 21:32
结果就是
你想发明轮子,那就发明轮子(当然是以学习为目的的),你不想发明轮子,那就使用现成的轮子


哈哈,听你的,不想发明就百度,

为了练手,我得把我的轮子造的像样一点,至少得让它转起来不散架
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-29 21:39:35 | 显示全部楼层
wp231957 发表于 2019-4-29 20:45
计算器 还是微软自带的好 不会错

老铁没毛病
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 22:39:56 | 显示全部楼层
回答你的问题:
呃呃嗯嗯,你确实傻~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-30 09:54:47 | 显示全部楼层
风丶少 发表于 2019-4-29 22:39
回答你的问题:
呃呃嗯嗯,你确实傻~

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-30 10:14:14 | 显示全部楼层
iwanna 发表于 2019-4-29 22:44
实现四则运算不是那么简单的,如果没有eval,你要用ast语法树去解析输入,判断四则的顺序

不懂什么是ast语法树,百度了一下看的也是一知半解,好像是把文本信息或者不容易读的代码转换成易读的形式,即转换后有很明显的层次解构。
不过我的思路不是这样,我是根据运算符的优先级,依次计算运算符左右两边的数字,然后把得到的数字和剩下重新组合,再重新运算。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-16 02:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表