任务描述
本关任务:编写一个将日期格式化输出的小程序。
相关知识
为了完成本关任务,你需要掌握使用字符串拼接方式进行格式化输出的方法。
字符串拼接方式格式化输出
如下代码:
name = input( )
age = input( )
job = input( )
print("name="+name+","+"age= "+age+","+"job="+job)
当输入:
Danny
22
worker
时,会得到如下输出:
name=Danny,age =22,job=worker
编程要求
根据提示,在右侧编辑区补充代码,分三行输入年月日的整数值,要求用字符串拼接方法输出,输出格式形如:2021年04月26日。
测试说明
平台会对你编写的代码进行测试:
测试输入:
2021
04
26
预期输出:
2021年04月26日
# 实验要求
# 在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
# 6 用字符串拼接方法输出,格式:2020 年09 月16 日
# 测试数据
# 输入(>>>开头的行表示输入数据)
# >>>2021
# >>>04
# >>>26
# 输出
# 2021年04月26日
# 以下为代码区
# =======================================================
year = input() # 输入当前年
month = input() # 输入当前月
date = input() # 输入当前日
# =======================================================
# 此处去掉注释符号“#”并补充你的代码
print(year+"年"+month+"月"+date+"日")
# =======================================================
任务描述
本关任务:编写一个欢迎入学的小程序。
问题描述
开学了,你考上了武汉理工大学,校园的电子屏上显示着以下欢迎界面:
|++++++++++++++++++++++|
| |
| Welcome to WHUT |
| |
|++++++++++++++++++++++|
要打印上面的界面,需要编写如下代码:
print('|++++++++++++++++++++++|')
print('| |')
print('| Welcome to WHUT |')
print('| |')
print('|++++++++++++++++++++++|')
编程要求
根据提示,在右侧编辑区补充代码,用户输入姓名,输出以上界面后,再在下一行输出 欢迎您,XXX同学!
测试说明
平台会对你编写的代码进行测试:
测试输入:
李明
预期输出:
|++++++++++++++++++++++|
| |
| Welcome to WHUT |
| |
|++++++++++++++++++++++|
欢迎您,李明同学!
"""
编写程序,用户入自己的姓名,输出以下界面后,再在下一行输出“欢迎您,***同学!”
|++++++++++++++++++++++|
| |
| Welcome to WHUT |
| |
|++++++++++++++++++++++|
"""
my_name = input() # 输入学生的姓名
########### Begin ############
# 输出以上界面
print('|++++++++++++++++++++++|')
print('| |')
print('| Welcome to WHUT |')
print('| |')
print('|++++++++++++++++++++++|')
# 输出“欢迎您,***同学!”
print("欢迎您,"+my_name+"同学!")
########### End ############
任务描述
本关任务:编写一个能计算整数四则运算及格式化输出的小程序。
相关知识
Python 可以方便地实现计算器功能。数学意义上的加、减、乘、除在 Python 中分别以符号+、-、*、/表示。
试编程实现:分两行输入两个非零整数,按如下格式分四行输出加减乘除运算式。
整数1 + 整数2 = 和
整数1 - 整数2 = 差
整数1 * 整数2 = 积
整数1 / 整数2 = 商
示例代码:
a = 5
b = 10
c = a + b
# 输出带格式计算结果
print('a+b=', c) # a+b= 15,输出两个对象,默认空格分隔
print('a+b=', c, sep='') # a+b=15,用空字符串分隔,消除空格
print(a,'+',b,'=', a+b) # a + b = 15,输出五个对象,默认空格分隔
编程要求
根据提示,在右侧编辑区补充代码,分两行输入两个非零整数,分四行输出四则运算表达式。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1
2
预期输出:
1 + 2 = 3
1 - 2 = -1
1 * 2 = 2
1 / 2 = 0.5
"""
试编程实现分两行输入两个非零整数,并在4 行中按顺序输出两个数的加、减、乘、除的计算结果。
要求输出与如下示例格式相同,符号前后各有一个空格。
"""
#输入整数变量a和b,定义输入函数
##############Begin##################
a = int(input())
b = int(input())
##############End####################
#a和b之间进行四则运算并输出
##############Begin##################
print(f'{a} + {b} = {a + b}')
print(f'{a} - {b} = {a - b}')
print(f'{a} * {b} = {a * b}')
print(f'{a} / {b} = {a / b}')
##############End####################
任务描述
本关任务:编写一个小程序,分两行输入两个非零浮点数,并在 4 行中按顺序输出两个数的加、减、乘、除计算式和计算结果。
相关知识
str.format()方法详解
str.format() 方法通过字符串中的花括号 {} 来识别替换字段 replacement field ,从而完成字符串的格式化。
替换字段 由字段名 field name 和转换字段 conversion field 以及格式说明符 format specifier 组成,即一般形式为 {字段名=转换字段:格式说明符}。
字段名分为简单字段名 simple field name 和复合字段名 compound field name。
而转换字段和格式说明符都是可选的。
简单字段名有三种写法:
省略不写 ,直接{}
数字,即{十进制非负整数}
变量名 ,即{合法的 Python 变量名}
格式说明符里的精度:
精度指定了小数点后面要展示多少位小数
对于非数字类型,精度指定了最大字段宽度
整数类型不能指定精度
str.format()方法示例
print('我叫{},今年{}岁。'.format('小明', 18))
"""
我叫小明,今年18岁。
"""
print('{0:{1}}'.format(3.14159, '.4f'))
"""
3.1416
"""
问题描述
试编程实现分两行输入两个非零浮点数,并在 4 行中按顺序输出两个数的加、减、乘、除的计算式和计算结果。计算结果使用 str.format() 方法保留小数点后 3 位数字。
示例代码:
a = 5.2
b = 10.2
c = a + b
# 输出带格式计算结果
print('{} + {} = {:.3f}'.format(a,b,c) ) # 5.2 + 10.2 = 15.400
测试说明
平台会对你编写的代码进行测试:
测试输入:
2.66
3.1415926
预期输出:
2.66 + 3.1415926 = 5.802
2.66 - 3.1415926 = -0.482
2.66 * 3.1415926 = 8.357
2.66 / 3.1415926 = 0.847
'''
试编程实现分两行输入两个非零浮点数,并在4 行中按顺序输出两个数的加、减、乘、除的计算式和计算结果。计算结果str.format()方法保留小数点后3位数字。要求输出与如下示例格式相同,符号前后各有一个空格。
'''
#输入浮点型变量a和b,定义输入函数
#############Begin##############
a = float(input())
b = float(input())
#############End################
#a和b之间进行四则运算并输出
#############Begin################
print(f'{a} + {b} = {a + b:.3f}')
print(f'{a} - {b} = {a - b:.3f}')
print(f'{a} * {b} = {a * b:.3f}')
print(f'{a} / {b} = {a / b:.3f}')
#############End################
任务描述
本关任务:编写一个根据用户输入的数值和运算符进行四则运算的小程序。
相关知识
为了完成本关任务,你需要掌握:
evel()函数
eval() 函数用于执行一个字符串表达式,并且返回该表达式的值。在 Python 中 evel()函数 的语法格式为 eval(expression, globals=None, locals=None),注意后面还有 globals 参数和 locals 参数。
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 被屏蔽,取用字典中a的值。
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,打印结果为116。
编程要求
根据提示,在右侧编辑区补充代码,实现一个能根据用户输入的数值和运算符进行四则运算的小程序。
示例代码 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'{eval(f"{a}{sign}{b}")}') # 输出50
# eval()函数把字符串f"{a}{sign}{b}"转为表达式并运算得到结果
#这里f"{a}{sign}{b}"为字符串"10*5",eval()运算后得到50
# f'{eval(f"{a}{sign}{b}")}'字符串里包含引号,此时要求内部引号与边界使用不同的引号,这里外边用的单引号',内部用的双引号"
测试说明
平台会对你编写的代码进行测试:
测试输入:
请输入一个整数:10
请再输入一个整数:6
请输入运算符号*
预期输出:
10*6=60
a = int(input('请输入一个整数:'))
b = int(input('请再输入一个整数:'))
sign = input('请输入运算符号')
###################Begin##################################
# eval()函数把字符串f"{a}{sign}{b}"转为计算表达式
# 字符串里包含引号时,内部引号与边界应用不同的引号
c = eval(f"{a}{sign}{b}")
print(f'{a}{sign}{b}={c}')
###################End##################################
任务描述
本关任务:编写一个能随机出四则运算题目的小程序。
相关知识
为了完成本关任务,你需要掌握:
random库里几个函数的用法
random.random()
随机生成(0,1)之间的浮点数。
random.randint(参数1,参数2)
随机生成指定范围内的整数,两个参数分别表示范围上限和下限。
参数 1、参数 2 必须是整数。
函数返回 [参数 1 ,参数 2] 之间的任意整数,闭区间。
import random
result = random.randint(1,10) #返回 [1, 10] 之间的任意整数
print("result: ",result)
#输出:
#result: 6
random.randrange(上限,下限,增量)
在指定范围内按指定基数递增得到的集合中获得一个随机数。randrange( )有三个参数,前两个参数代表范围上限和下限,第三个参数是递增增量,不包括下限,包括上限。
使用方式如下:
random.randrange(0,11,2)
#随机产生范围为[0,11),间隔为2的数
#注:这里输出(0,2,4,6,8,10)中一个。
random.choice(list)
从序列中随机抽选一个数。
random.shuffle(list)
对list随机排序。
注:list的元素为数值型
示例代码 1:
# 批量生成四则运算式
# 产生10道正整数四则运算的题目,用户输入计算结果,判断输入正确与否
for i in range(10): # 循环10次,每次产生一个新问题
a = int(input('请输入一个整数:'))
b = int(input('请再输入一个整数:'))
sign = input('请输入运算符号')
print(f'{a}{sign}{b}=', end='') # 5+10=,格式化输出
result = float(input()) # 用户输入计算结果
if result == eval(f"{a}{sign}{b}"):
print('恭喜你,回答正确')
else:
print('回答错误,你要加油哦!')
编程要求
根据提示,在右侧编辑区补充代码,完善一个能随机出题进行四则运算的小程序。用户在两行分别输入出题数量和参与计算的最大数字,程序随机产生一个四则运算表达式,用户输入表达式运算结果,输入正确时输出'恭喜你,回答正确',输入错误时输出'回答错误,你要加油哦!',统计并输出回答正确的题目数量并计算正确率。
输入输出格式参考示例。
测试说明
平台会对你编写的代码进行测试:
测试输入:
1
4
7
预期输出:
请输入出题数量:请输入参与计算的最大数字:4+3=恭喜你,回答正确
答对1题,正确率为100.0%
import random
random.seed(0)
def calculator(n, maximum):
"""随机产生n道正整数四则运算的题目,用户输入计算结果,
判断输入正确与否,并统计正确率。题目保证减法不出现负数."""
correct = 0
for i in range(n): # 循环n次,每次产生一个新问题
b = random.randint(0, maximum) # 随机产生一个maximum以内整数
a = random.randint(b, maximum) # 随机产生一个b到maximum以内整数,避免减法出现负数
#################Begin##############################
sign = random.choice('+-*/')
if(sign == '+'):
result = a + b
elif(sign == '-'):
result = a - b
elif(sign == '*'):
result = a * b
else:
result = a / b
print(f'{a}{sign}{b}=', end='')
answer = float(input())
if answer == eval(f"result"):
print("恭喜你,回答正确")
correct +=1
else:
print("回答错误,你要加油哦!")
#################End##############################
print(f'答对{correct}题,正确率为{correct / n * 100}%')
if __name__ == '__main__':
num = int(input('请输入出题数量:'))
m = int(input('请输入参与计算的最大数字:'))
calculator(num, m)