简单学Python——内置函数9——eval()函数

yumo6664个月前 (05-21)技术文章34

今天我们学习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#猜对数字,强行跳出循环。

相关文章

python强大但很危险的一个函数eval()

在 Python 中,eval() 是一个强大但危险的函数,用于执行字符串形式的 Python 表达式。以下是深度解析:一、基础用法result = eval(expression, globals=...

还在用Python的eval处理用户输入?你的代码可能正在“裸奔”!

凌晨3点,程序员小王被急促的电话惊醒。线上系统突然删光了所有用户订单数据——仅仅因为一段用了eval()的代码。这不是电影情节,而是某电商平台真实的安全事故。今天我们就来深挖这个潜伏在无数Python...

php中assert和eval的详细介绍(代码示例)

本篇文章给大家带来的内容是关于php中assert和eval的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。assert 判断一个表达式是否成立。返回true o...

清华团队深度实证:RL 真能让大模型进化吗?能力边界仍被基座“锁死”!

大数据文摘出品强化学习(RL)真的能让大模型获得超越基础模型的新推理能力吗?近日,清华大学LeapLab团队联合上海交大,发布了一篇题为《Does Reinforcement Learning Rea...

越聪明越会撒谎?OpenAI推理模型o3/o4-mini幻觉率翻倍,嘴还很硬

OpenAI 最新发布的推理 AI 模型 o3 和 o4-mini 在性能上又创新高,就在大家期待它能进一步提升日常工作的生产力时,许多用户却发现,它们的幻觉率却比前代模型要高了不少。据 OpenAI...

GPT-4o医学知识覆盖率仅55%?大模型医疗能力“体检报告”来了

MedKGEval团队 投稿量子位 | 公众号 QbitAI医疗大模型知识覆盖度首次被精准量化!在医疗领域,大语言模型(LLM)的潜力令人振奋,但其知识储备是否足够可靠?腾讯优图实验室天衍研究中心的最...