今天我们学习Python内置的eval()函数。eval()函数解析传递给该函数的表达式,并在程序中运行python表达式(代码)。听起来挺抽象,简单点说,就是eval()接收一个字符串,然后把两边的引号或双引号去掉,最后执行已经去掉双引号或双引号的表达式。例如:
a='9*5'
eval(a)
返回:45。就是去掉引号,然后计算9*5,等于45。
例如:
a='hello'
eval(a)
返回:NameError: name ‘hello’ is not defined。去完括号剩下了hello,把这个hello当作了变量,然后发现未定义,所以就报错了。
看起来用处不大,但如果结合其他函数,尤其是input()就发挥出作用了。
前面有一个猜数字的游戏(简单学Python——编写一个程序(猜数字)),要求输入整数进行判断。今天增加点儿复杂性,可以输入小数。这个时候是不是条件反射的想到了——要用if判断一下input接收的是小数还是整数吧。有了eval(),就省略了判断这一步,下面看代码:
import random
a=random.randint(0,49)+random.uniform(0, 1)#生成一个0-50之间的小数
b=eval(input("请输入0-50之间的一个数,可以是小数,输入完毕请按回车键:"))
i=0
while 1:#由于1肯定为True,所以while这儿一起运行循环,直到后面出现break。
i=i+1
#判断的标准为:只要离a在±0.5范围内就算对。
if b-a>0.5:
b=eval(input("太大了,请重新输入:"))
elif b-a<-0.5:
b=eval(input("太小了,请重新输入:"))
else:
print(f"太棒了,你猜的{b}合格!精确答案为{a},游戏结束!你一共猜了{i}次")#这儿是格式化输出
break#猜对数字,强行跳出循环。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/74999
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!