头歌实践教学平台——Python编程技术
Python语言基础
- 浮点数四则运算与格式化输出
- 计算矩形面积
- 简单数学运算
- 空格分隔格式化输出
- 多对象的分隔符号格式化输出
- format方式格式化输出
- 字符串拼接方式格式化输出
- 欢迎入学
- 整数四则运算
- 浮点类型四则运算
- 用户输入数值和符号
- 随机出题的四则运算
第1关:浮点数四则运算与格式化输出
任务描述
Python 可以方便的实现计算器的功能。数学意义上的加、减、乘、除在Python中分别以符号“+、-、*、/”表示。
试编程实现分两行输入两个非零浮点数,并在4 行中按顺序输出两个数的加、减、乘、除的计算式和计算结果。计算结果str.format()方法严格保留小数点后3位数字。要求输出与如下示例格式相同,符号前后各有一个空格。
浮点数1 + 浮点数2 = 和 浮点数1 - 浮点数2 = 差 浮点数1 * 浮点数2 = 积 浮点数1 / 浮点数2 = 商
示例
输入:
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
平均代码量 5 行
代码文件
a = float(input())
b = float(input())
print('{} + {} = {:.3f}'.format(a,b,a + b))
print('{} - {} = {:.3f}'.format(a,b,a - b))
print('{} * {} = {:.3f}'.format(a,b,a * b))
print('{} / {} = {:.3f}'.format(a,b,a / b))
第2关:计算矩形面积
任务描述
用户输入矩形的长和宽,计算其面积并输出。
a = eval(input()) #输入整数字符串,转换为整数;输入浮点数字符串,转换为浮点数
b = float(input()) #输入整数和浮点数,都转换为浮点数
c = int(input()) #只接受整数输入,输出为整数
#eval()和float()函数都可以把input() 函数接收到的数值型字符串转为数值类型
#例:float('3.14') 的结果是数值 3.14
#int()函数可以把整数字符串转为整数
#例:int('5') 的结果是数值 5
输入格式
第一行输入一个数字,代表矩形的长
第二行输入一个数字,代表矩形的宽
(输入使用input(),不要增加额外的提示信息)
输出格式
输出矩形的面积,不限定小数位数
示例1
输入:
3.1415926
5.88
输出:
18.472564488
示例2
输入:
5
8
输出:
40
平均代码量 2 行
代码文件
width=eval(input())
length=eval(input())
area = width * length
print(area)
第3关:简单数学运算
任务描述
输入两个整数 a,b,顺序输出加、减和乘法运算的结果。
输入格式
第一行输入整数 a
第二行输入整数 b
输出格式
第一行输出 a +b的结果
第二行输出 a - b 的结果
第三行输出 a * b 的结果
参考下面程序
def hello(user):
# 在此处输入你的代码
print('hello', user) # 你输入的多行代码都要与上一行处于相同的缩进量
print('你好!', user)
if __name__ == '__main__':
user_name = input() # 输入一个姓名
hello(user_name) # 调用你定义的函数进行输出
# 输入
# 张三
# 输出
# hello 张三
# 你好! 张三
示例
输入:
3
2
输出:
5
1
6
平均代码量 9 行
代码文件
def solve(a,b):
# 在此处输入你的代码
print(a + b)
print(a - b)
print(a * b)
if __name__ == '__main__':
a = int(input()) # 输入转为整数
b = int(input()) # 输入转为整数
solve(a,b) # 调用你定义的函数进行数学运算
第4关:空格分隔格式化输出
任务描述
本关任务:编写一个日期格式化输出的小程序。
相关知识
为了完成本关任务,你需要掌握:
Python 的空格分隔格式化输出
格式化输出
Python 中空格分隔格式化输出:
比如要求用户输入用户名、年龄和工作,然后打印如下格式:
name = input( )
age = input( )
job = input( )
print(name, age ,job)
输入:
Danny
22
worker
输出:
Danny 22 worker
编程要求
根据提示,在右侧编辑器补充代码,在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
任务:输出年月日,空格分隔,格式:2020 09 16
测试说明
平台会对你编写的代码进行测试:
测试输入:
2021
04
26
预期输出:
2021 04 26
代码文件
# 实验要求
# 在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
# 1 输出年月日,空格分隔,格式:2020 09 16
# 测试数据
# 输入(>>>开头的行表示输入数据)
# >>>2021
# >>>04
# >>>26
# 输出
# 2021 04 26
# 以下为代码区
# =======================================================
year = input() # 输入当前年
month = input() # 输入当前月
date = input() # 输入当前日
# =======================================================
# 此处去掉注释符号“#”并补充你的代码
print(year,month,date,sep=' ')
# =======================================================
第5关:多对象的分隔符号格式化输出
任务描述
本关任务:编写一个日期格式化输出的小程序。
相关知识
为了完成本关任务,你需要掌握:
1.python的多对象分隔符号输出;
格式化输出
Python中多对象分隔符号输出:
比如要求用户输入用户名、年龄和工作,然后打印如下格式:
name = input( )
age = input( )
job = input( )
print(name, age ,job , sep='-')
print(name, age ,job , sep='/')
print(name, age ,job , sep=',')
print(name, age ,job , sep='|')
输入:
Danny
22
worker
输出:
Danny-22-worker
Danny/22/worker
Danny,22,worker
Danny|22|worker
编程要求
根据提示,在右侧编辑器补充代码,在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
任务:
输出年-月-日,连字符“-”分隔,格式:2020-09-16
输出年/月/日,斜线“/”分隔,格式:2020/09/16
输出月,日,年,逗号“,”分隔,格式:09,16,2020
测试说明
平台会对你编写的代码进行测试:
测试输入:
2021
04
26
预期输出:
2021-04-26
2021/04/26
04,26,2021
代码文件
# 实验要求
# 在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
# 2 输出年-月-日,连字符“-”分隔,格式:2020-09-16
# 3 输出年/月/日,斜线“/”分隔,格式:2020/09/16
# 4 输出月,日,年,逗号“,”分隔,格式:09,16,2020
# 测试数据
# 输入(>>>开头的行表示输入数据)
# >>>2021
# >>>04
# >>>26
# 输出
# 2021-04-26
# 2021/04/26
# 04,26,2021
# 以下为代码区
# =======================================================
year = input() # 输入当前年
month = input() # 输入当前月
date = input() # 输入当前日
# =======================================================
# 此处去掉注释符号“#”并补充你的代码
print(year,month,date,sep='-')
print(year,month,date,sep='/')
print(month,date,year,sep=',')
# =======================================================
第6关:format方式格式化输出
任务描述
本关任务:编写一个日期格式化输出的小程序。
相关知识
为了完成本关任务,你需要掌握:
1.python 的 format 格式化输出。
格式化输出
Python 中 format() 格式化输出的方式:
利用format格式化输出
format 格式化输出,比较简单,实用,f或者F都可以哦。
示例1:
name = input("请输入您的姓名:")
QQ = input("请输入您的qq:")
phone = input("请输入您的电话:")
addr=input("请输入您的地址:")
print('姓名是{} 年龄是{}岁'.format(name,25))
print('QQ是{}'.format(QQ))
print('手机号是{}'.format(phone))
print('地址是{}'.format(addr))
输出:
姓名是Bertram 年龄是25岁
QQ是123425212
手机号是010-24184241
地址是北京
示例2:
name = 'Bertram'
age = 30
print("hello,{1},you are {0}".format(age,name))#索引是根据format后的数据进行的哦
输出:
hello,Bertram,you are 30
示例3:
name = '杰'
age =26
print("hello,{name},you are {age}.".format(age=age, name=name))
输出:
hello,杰,you are 26.
编程要求
根据提示,在右侧编辑器补充代码,在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
任务:用 str.format() 格式输出,格式:2021年04月26日
测试说明
平台会对你编写的代码进行测试:
测试输入:
2021
04
26
预期输出:
2021年04月26日
代码文件
# 实验要求
# 在三行中分别输入当前的年、月、日的整数值,按要求完成输出。
# 5 用str.format()格式输出,格式:2020 年09 月16 日
# 测试数据
# 输入(>>>开头的行表示输入数据)
# >>>2021
# >>>04
# >>>26
# 输出
# 2021年04月26日
# 以下为代码区
# =======================================================
year = input() # 输入当前年
month = input() # 输入当前月
date = input() # 输入当前日
# =======================================================
# 此处去掉注释符号“#”并补充你的代码
print('{}年{}月{}日'.format(year,month,date))
# =======================================================
第7关:字符串拼接方式格式化输出
### 任务描述 本关任务:编写一个日期格式化输出的小程序。相关知识
为了完成本关任务,你需要掌握:
1.使用字符串拼接方式进行格式化输出。
格式化输出
Python 中字符串拼接方式格式化输出的方式:
比如要求用户输入用户名、年龄和工作,然后打印如下格式:
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+"日")
# =======================================================
第8关:欢迎入学
任务描述
本关任务:编写一个欢迎入学的小程序。
相关知识
问题描述
开学了,你考上了武汉理工大学,校园的电子屏上显示着以下欢迎界面:
|++++++++++++++++++++++|
| |
| Welcome to WHUT |
| |
|++++++++++++++++++++++|
以下为代码区:
print('|++++++++++++++++++++++|')
print('| |')
print('| Welcome to WHUT |')
print('| |')
print('|++++++++++++++++++++++|')
编程要求
根据提示,在右侧编辑器补充代码,完成相关任务的编程。
编写程序,用户入自己的姓名,输出以上界面后,再在下一行输出“欢迎您,***同学!”
测试说明
平台会对你编写的代码进行测试:
测试输入:李明
;
预期输出:
|++++++++++++++++++++++|
| |
| Welcome to WHUT |
| |
|++++++++++++++++++++++|
欢迎您,李明同学!
代码文件
"""
编写程序,用户入自己的姓名,输出以下界面后,再在下一行输出“欢迎您,***同学!”
|++++++++++++++++++++++|
| |
| Welcome to WHUT |
| |
|++++++++++++++++++++++|
"""
my_name = input() # 输入学生的姓名
########### Begin ############
# 输出以上界面
print('|++++++++++++++++++++++|')
print('| |')
print('| Welcome to WHUT |')
print('| |')
print('|++++++++++++++++++++++|')
print('欢迎您,'+my_name+'同学!')
# 输出“欢迎您,***同学!”
########### End ############
第9关:整数四则运算
任务描述
本关任务:编写一个能计算整数四则运算及格式化输出的小程序。
相关知识
问题描述
Python 可以方便的实现计算器的功能。数学意义上的加、减、乘、除在 Python 中分别以符号“+、-、*、/”表示。
试编程实现分两行输入两个非零整数。
整数1 + 整数2 = 和
整数1 - 整数2 = 差
整数1 * 整数2 = 积
整数1 / 整数2 = 商
整数四则运算相关实例:
输入两个非零整数,在 4 行中按顺序输出两个数的加、减、乘、除的计算结果。
代码示例 1:
a = 5
b = 10
c = a + b
# 输出计算结果
print(c)
print(a + b)
代码示例 2:
a = 5
b = 10
c = a + b
# 输出带格式计算结果
print('a+b=', c) # a+b= 15,输出两个对象,默认空格分隔
print('a+b=', c, sep='') # 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####################
第10关:浮点类型四则运算
任务描述
本关任务:编写一个实现分两行输入两个非零浮点数,并在 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 位数字。
浮点数1 + 浮点数2 = 和
浮点数1 - 浮点数2 = 差
浮点数1 * 浮点数2 = 积
浮点数1 / 浮点数2 = 商
代码示例 1:
a = 5.2
b = 10.2
c = a + b
# 输出带格式计算结果
print('5.2+10.2=', c, sep='') # 5.2+10.2=15.4,2个对象,空格分隔
print(a, b, sep='+', end='=') # 5.2+10.2= ,2个对象,用+分隔,用=结束,不换行
print(c) # 5.2+10.2=15.4,接上一条语句输出
编程要求
根据提示,在右侧编辑器补充代码,试编程实现分两行输入两个非零浮点数,并在 4 行中按顺序输出两个数的加、减、乘、除的计算式和计算结果,使用 str.format() 方法保留小数点后 3 位数字。
测试说明
平台会对你编写的代码进行测试:
测试输入:
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################
第11关:用户输入数值和符号
任务描述
本关任务:编写一个根据用户输入的数值和符号进行四则运算的小程序。
相关知识
为了完成本关任务,你需要掌握:
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##################################
第12关:随机出题的四则运算
任务描述
本关任务:编写一个能随机出题的四则运算的小程序。
相关知识
为了完成本关任务,你需要掌握:
random函数用法
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( )
在指定范围内,按指定基数递增的集合中获得一个随机数,有三个参数,前两个参数代表范围上限和下限,第三个参数是递增增量,不包括下限,包括上限。
使用方式如下:
random.randrange( 0,11,2)
#随机产生范围为10间隔为2的数。
#注:这里输出(0,2,4,6,8,10)中一个。
random.choice(list)
从序列中随机抽选一个数。
random.shuffle(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=15,格式化输出
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##############################
list = ['+','-','*','/']
sign = random.choice(list)
print(f'{a}{sign}{b}=',end="")
result = float(input())
if result == eval(f"{a}{sign}{b}"):
correct = correct + 1
print('恭喜你,回答正确')
else:
print('回答错误,你要加油哦!')
#################End##############################
print(f'答对{correct}题,正确率为{correct / n * 100}%',end="")
if __name__ == '__main__':
num = int(input('请输入出题数量:'))
m = int(input('请输入参与计算的最大数字:'))
calculator(num, m)