124
社区成员




本关任务:编写一个根据用户输入的数值和符号进行四则运算的小程序。
为了完成本关任务,你需要掌握:
1.evel()函数详解
evel()函数详解
在 Python
中 evel()函数
的语法格式为 eval(expression, globals=None, locals=None)
,注意后面还有 globals
参数和 locals
参数。eval()
函数用于执行一个字符串表达式,并且返回该表达式的值。
expression
:表达式,上面提到 evel
函数用于执行一个字符串表达式,表达式的内容就放在此处。当表达式涉及到globals
:该部分必须是字典!必须是字典!必须是字典!否则程序会出错。当定义了 globals
参数之后eval函数的作用域会被限定在globals中。locals
:该参数掌控局部的命名空间,功能和 globals
类型,不过当参数冲突时,会执行 locals
处的参数。expression参数示例
代码示例:
a=10;
print(eval("a+1"))
运行结果为11。
解析:因为此处没有指定 globals
和 locals
,所以直接执行 expression
部分的内容。该程序的效果等价于 a=10 print(a+1)
。
globals参数示例
a=10;
g={'a':4}
print(eval("a+1",g))
运行结果为5。
解析:因为现在指定了 globals
,所以在 expression
部分的作用域就是 globals
指定的字典范围内。所以此时外面的 a=10
被屏蔽,取用字典中的值。
locals参数示例
a=10
b=20
c=30
g={'a':6,'b':8}
t={'b':100,'c':10}
print(eval('a+b+c',g,t))
运行结果为116。
解析:根据上面题目的练习我们知道了当有 globals
和 locals
时作用的范围域是在 globals
和 locals
中,所以 a=10
, b=20
, c=30
不会被应用。 a
和 c
的值分别去字典 g
和字典 t
中的值,当 globals
和 locals
中都有参数 b
时取 locals
中的值。所以 a=6
, b=100
,c=10
。
代码示例 1
:
#用户输入计算数据
a = input() # 输入 5,默认为字符串'5'
b = input() # 输入 10,默认为字符串'10'
c = int(a) + int(b) # 转为整数做数学运算
print('{}+{}={}'.format(a, b, c)) # 5+10=15,格式化输出
print(f'{a}+{b}={c}') # 5+10=15,格式化输出
代码示例 2
:
#用户输入数值和符号
a = int(input('请输入一个整数:')) # 输入字符串'10',转整数10
b = int(input('请再输入一个整数:')) # 输入字符串'5',转整数5
sign = input('请输入运算符号')
print(f'{a}{sign}{b}={eval(f"{a}{sign}{b}")}')
# eval()函数把字符串f"{a}{sign}{b}"转为计算表达式
# 字符串里包含引号时,内部引号与边界应用不同的引号
根据提示,在右侧编辑器补充代码,完善一个根据用户输入的数值和符号进行四则运算的小程序。
平台会对你编写的代码进行测试:
测试输入: 请输入一个整数:10
请再输入一个整数:6
`请输入运算符号*``
预期输出: 10*6=60
a = int(input('请输入一个整数:'))
b = int(input('请再输入一个整数:'))
sign = input('请输入运算符号')
###################Begin##################################
# eval()函数把字符串f"{a}{sign}{b}"转为计算表达式
# 字符串里包含引号时,内部引号与边界应用不同的引号
print(f'{a}{sign}{b}={eval(f"{a}{sign}{b}")}')
###################End##################################