第11关:用户输入数值和符号

2006江军峰 2022-10-01 16:33:42

 

任务描述

本关任务:编写一个根据用户输入的数值和符号进行四则运算的小程序。

相关知识

为了完成本关任务,你需要掌握:

1.evel()函数详解

evel()函数详解

Pythonevel()函数 的语法格式为 eval(expression, globals=None, locals=None),注意后面还有 globals 参数和 locals 参数。eval() 函数用于执行一个字符串表达式,并且返回该表达式的值。

  1. expression:表达式,上面提到 evel 函数用于执行一个字符串表达式,表达式的内容就放在此处。当表达式涉及到
  2. globals该部分必须是字典!必须是字典!必须是字典!否则程序会出错。当定义了 globals 参数之后eval函数的作用域会被限定在globals中。
  3. locals:该参数掌控局部的命名空间,功能和 globals 类型,不过当参数冲突时,会执行 locals 处的参数。

expression参数示例

代码示例:


 
  1. a=10;
  2. print(eval("a+1"))

运行结果为11。

解析:因为此处没有指定 globalslocals,所以直接执行 expression 部分的内容。该程序的效果等价于 a=10 print(a+1)

globals参数示例


 
  1. a=10;
  2. g={'a':4}
  3. print(eval("a+1",g))

运行结果为5。

解析:因为现在指定了 globals,所以在 expression 部分的作用域就是 globals 指定的字典范围内。所以此时外面的 a=10 被屏蔽,取用字典中的值。

locals参数示例


 
  1. a=10
  2. b=20
  3. c=30
  4. g={'a':6,'b':8}
  5. t={'b':100,'c':10}
  6. print(eval('a+b+c',g,t))

运行结果为116。

解析:根据上面题目的练习我们知道了当有 globalslocals 时作用的范围域是在 globalslocals 中,所以 a=10 , b=20 , c=30 不会被应用。 ac 的值分别去字典 g 和字典 t 中的值,当 globalslocals 中都有参数 b 时取 locals 中的值。所以 a=6 , b=100 ,c=10

代码示例 1:


 
  1. #用户输入计算数据
  2. a = input() # 输入 5,默认为字符串'5'
  3. b = input() # 输入 10,默认为字符串'10'
  4. c = int(a) + int(b) # 转为整数做数学运算
  5. print('{}+{}={}'.format(a, b, c)) # 5+10=15,格式化输出
  6. print(f'{a}+{b}={c}') # 5+10=15,格式化输出

代码示例 2:


 
  1. #用户输入数值和符号
  2. a = int(input('请输入一个整数:')) # 输入字符串'10',转整数10
  3. b = int(input('请再输入一个整数:')) # 输入字符串'5',转整数5
  4. sign = input('请输入运算符号')
  5. print(f'{a}{sign}{b}={eval(f"{a}{sign}{b}")}')
  6. # eval()函数把字符串f"{a}{sign}{b}"转为计算表达式
  7. # 字符串里包含引号时,内部引号与边界应用不同的引号

编程要求

根据提示,在右侧编辑器补充代码,完善一个根据用户输入的数值和符号进行四则运算的小程序。

测试说明

平台会对你编写的代码进行测试:

测试输入: 请输入一个整数: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##################################

 

...全文
908 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

124

社区成员

发帖
与我相关
我的任务
社区描述
Python课堂教学
python 高校
社区管理员
  • 42python
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧