首页 新闻 赞助 找找看

py中的eval函数

0
悬赏园豆:10 [已解决问题] 解决于 2018-09-21 14:59
s2=eval("12+45"+"12")  
print(s2)

为什么结果是酱紫呢#结果4524


s=eval("1+2"+"10")  #结果211
print(s)
为嘛


ProZkb的主页 ProZkb | 初学一级 | 园豆:4
提问于:2018-08-24 10:49
< >
分享
最佳答案
1

计算eval("12+45"+"12")分两步

1. "12+45"+"12" 结果为 "12+4512"

2. eval("12+4512")

得结果 4524(即4524 == 12 + 4524)

收获园豆:10
Uteki | 小虾三级 |园豆:573 | 2018-08-24 18:18

是这样吗?为什么不是前面的12和后面的12相加,最后是45+1212呢?

ProZkb | 园豆:4 (初学一级) | 2018-08-25 18:52

@ZKB&&ZKP: 2*3+2为什么不先算3+2呢?

Uteki | 园豆:573 (小虾三级) | 2018-08-26 16:47
其他回答(1)
2

首先"12+45"+"12"="12+4512"(这是一个字符串拼接),所以传进去的是"12+4512",自然结果是4524

happyZYM | 园豆:248 (菜鸟二级) | 2018-08-24 11:07

不是啊,他的eval函数啊,是怎么算或者合并的嗯; eval("1+2"+"10") 他这是:2+(1+10)这样算的?

支持(0) 反对(0) ProZkb | 园豆:4 (初学一级) | 2018-08-24 11:11

@ZKB&&ZKP: "12+45"+"12"是一个字符串拼接而不是有理数的运算

支持(0) 反对(0) happyZYM | 园豆:248 (菜鸟二级) | 2018-08-24 11:16

@happyZYM: 那就是拼接,s2怎么能品出来个24呢???

支持(0) 反对(0) ProZkb | 园豆:4 (初学一级) | 2018-08-24 11:17

@ZKB&&ZKP: 你能把实际运行结果、期望运行结果、你的代码发给我么?

支持(0) 反对(0) happyZYM | 园豆:248 (菜鸟二级) | 2018-08-24 12:21

@happyZYM: 代码就是这些,我本身是学net的,我是初学py,这都是基础,这不是遇到这个eval函数了。

支持(0) 反对(0) ProZkb | 园豆:4 (初学一级) | 2018-08-24 18:05

@happyZYM: 在pycharm中运行下,你就知道了

支持(0) 反对(1) ProZkb | 园豆:4 (初学一级) | 2018-08-24 18:06

@ZKB&&ZKP: emmmm我是搞OI(这就是为什么我一开始把“酱紫”当成了运行错误)的,主要学c++,py靠搜索引擎也会写一点点。我的理解是:eval函数的参数是一个字符串,首先计算"12+45"+"12"="12+4512"(这是一个字符串拼接),所以传给eval函数的参数是"12+4512",计算结果当然是4524了

支持(0) 反对(0) happyZYM | 园豆:248 (菜鸟二级) | 2018-08-24 19:22

@happyZYM: 我也不知道,这样感觉牵强,我还是去看看eval吧

支持(0) 反对(0) ProZkb | 园豆:4 (初学一级) | 2018-08-25 18:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册