转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301
- 如果代码存在问题,麻烦大家指正 ~ ~
- 有帮助麻烦点个赞 ~ ~
第1关 无参无返回值函数
任务描述
本关任务:编写一个无参无返回值函数的小程序。
相关知识
为了完成本关任务,你需要掌握:
- 无参无返回值函数
无参无返回值函数
定义一个无参数、无返回值的函数 print_hi_human()
,调用函数时可以让计算机向世界发出问候,在函数中输出“人类,你好!”。
无返回值函数一般在函数内部会有输出语句或绘图语句,函数的返回值是 None,在调用函数时不需要使用赋值语句或是 print()
函数。
代码示例:
print("Hello world")
编程要求
根据提示,在右侧编辑器补充代码,完善一个无参无返回值函数的程序。
测试说明
平台会对你编写的代码进行测试:
输入:无
输出:
人类,你好!
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def print_hi_human(): # 函数名用小写字母
"""文档注释,双引号,说明函数的参数、功能和返回值等。
定义一个名为print_hi_human的无参数函数,其功能是打印一句问候语,
这个函数没有return语句,即没有返回值,或者说其返回值为None。
# >>> print_hi_human()
# 人类,你好!
"""
# ==================Begin=====================================
# 此处去掉注释符号“#”并补充你的代码
print('人类,你好!')
# ===================End====================================
if __name__ == '__main__':
# 直接使用函数名来调用函数
# ==================Begin=====================================
# 此处去掉注释符号“#”并补充你的代码
print_hi_human()
# ===================End====================================
第2关 无参有返回值函数
任务描述
本关任务:编写一个无参有返回值函数的小程序。
相关知识
为了完成本关任务,你需要掌握:
- 无参有返回值函数
无参有返回值函数
定义一个无参数、有返回值的函数 say_hi_human()
,调用函数时输出函数的返回值,让计算机向世界发出问候,返回字符串“人类,你好!”。
有返回值函数用 return
语句将函数的处理结果返回给调用处,调用函数时用 print() 函数直接输出函数的处理结果,或使用赋值语句为返回值命名以用于后续处理。
编程要求
根据提示,在右侧编辑器补充代码,完善一个无参有返回值函数的小程序。
测试说明
平台会对你编写的代码进行测试:
输出:
输出:人类,你好!
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def say_hi_human(): # 函数名用小写字母
"""定义一个名为print_hi_human的无参数函数,其功能是返回字符串-人类,你好!"""
#========================Begin===============================
#补充你的代码
return '人类,你好!'
#==========================End=============================
if __name__ == '__main__':
# 函数名作为print()函数的参数,输出say_hi_human()的返回值
#========================Begin===============================
#补充你的代码
print(say_hi_human())
#==========================End=============================
第3关 有参有返回值函数
任务描述
本关任务:编写一个有参有返回值函数的小程序。
相关知识
为了完成本关任务,你需要掌握:
- 有参有返回值函数
有参有返回值函数
定义一个函数 say_hi_person()
,有一个参数 full_name
,接受人名的字符串为参数,函数的返回值为 “XXX,你好!”
,例如函数的参数为“李白”,返回值为“李白,你好!”
编程要求
根据提示,在右侧编辑器补充代码,完善一个有参有返回值函数的小程序。
测试说明
平台会对你编写的代码进行测试:
输入:李白;
输出:李白,你好!
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def say_hi_person(full_name): # 函数名用小写字母,函数名填空
"""定义一个名为say_hi_person的有参数函数,接受人名的字符串为参数,函数的返回值为“***,你好!”,
例如函数的参数为“李白”,返回值为“李白,你好!”。"""
#====================Begin===================================
# 补充你的代码
return full_name + ',你好!'
#=====================End==================================
if __name__ == '__main__':
# 函数名作为print()函数的参数,输出say_hi_human()的返回值。输入的人名作为函数的参数
person_name = input() # 输入人名
#====================Begin===================================
# 补充你的代码
print(say_hi_person(person_name))
#=====================End==================================
第4关 多参函数
任务描述
本关任务:编写一个多参函数进行计算机问候的小程序。
相关知识
为了完成本关任务,你需要掌握:
- 多参函数
多参函数
定义一个函数 say_hi_gender()
,有 2
个参数 full_name
和 gender
,接受人名和性别(“男”或“女”)的字符串为参数,函数的返回值为“尊敬的XXX先生/女士,欢迎来到火星!”。根据性别 gender
值确定称谓,男性称为“先生”,女性称为“女士”,不确定性别时称为“先生/女士”,返回值为替换了姓名与称谓的欢迎字符串 。
编程要求
根据提示,在右侧编辑器补充代码,完善一个多参函数进行计算机问候的小程序。
测试说明
平台会对你编写的代码进行测试:
测试输入:
李白
男
输出:
尊敬的李白先生,欢迎来到火星!
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def say_hi_gender(full_name, gender): # name 和gender为形式参数
"""定义一个名为say_hi的有参数函数,其功能是打印一句问候语
根据性别gender值确定称谓,男性称为“先生”,女性称为“女士”,不确定性别时称为“先生/女士”
返回值为替换了姓名与称谓的欢迎字符串
例如:尊敬的李白先生,欢迎来到火星!"""
# ====================Begin===================================
# 此处去掉注释符号“#”并补充你的代码
g = '先生/女士'
if gender == '男':
g = '先生'
if gender == '女':
g = '女士'
return f'尊敬的{full_name}{g},欢迎来到火星!'
# =======================================================
if __name__ == '__main__':
# 直接使用函数名来调用函数
# ====================Begin===================================
# 此处去掉注释符号“#”并补充你的代码
print(say_hi_gender(input(), input()))
# =======================================================
第5关 任意数量参数
任务描述
本关任务:编写一个能任意数量参数进行计算机问候的小程序。
相关知识
为了完成本关任务,你需要掌握:
- 任意数量参数
任意数量参数
定义一个函数 say_hi_multi_parameter
,使之可接收任意数量的姓名为参数,调用函数时,可以传递多个参数。
有时候你预先不知道函数需要多少实参,此时可以给函数传递一个用 “*”
开头的序列类型的参数,例如:“*id”
,形参名 id
前面的星号会让 Python
创建一个空元组,将收集到的所有实参值都封装到这个元组里。
编程要求
根据提示,在右侧编辑器补充代码,完善一个能任意数量参数进行计算机问候的小程序。
测试说明
平台会对你编写的代码进行测试:
输入格式:
本题无输入
输出格式:
分行对每个传入的参数输出“XXX,你好!”
输出:
孟浩然,你好!
杜甫,你好!
李白,你好!
柳宗元,你好!
李商隐,你好!
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def say_hi_multi_parameter(*names): # 括号里填上参数
for name in names:
print(name + ',你好!')
#调用say_hi_multi_parameter并传入参数
say_hi_multi_parameter('孟浩然')
say_hi_multi_parameter('杜甫', '李白', '柳宗元', '李商隐')
第6关 pow函数详解
任务描述
本关任务:编写一个能计算并输出 x 的 n 次方的小程序。
相关知识
为了完成本关任务,你需要掌握:
- pow函数详解
- 自定义pow函数
pow函数详解
pow()
函数是 Python
的内置函数,它计算并返回 x
的 y
次方的值。
pow(x, y, z)
名称 | 备注 | 说明 |
---|---|---|
x | 底数 | 不可省略的参数 |
y | 指数 | 不可省略的参数 |
z | 取余数字 | 可省略的参数。当z存在时,函数返回值等于 pow(x, y)%z |
编程示例:
- 参数
z
省略时 当省略取余数字z
时,pow
函数返回x
的y
次方的值。
print(pow(2, 3)) # 输出8
print(pow(4, 0.5)) # 输出2.0
- 参数
z
存在时 当参数z
存在,pow(x, y, z)
的返回结果就等于pow(x, y)
的结果对z
求余。
print(pow(8, 2, 5)) # 输出4
注意事项
z
参数省略时,返回值是x
的y
次方。
print(pow(2, 4)) # 输出16
z
参数省略时,x
和 y 的值可以是整数和浮点数 当x
或y
存在浮点数时,pow()
函数的返回结果也是浮点数,否则为整数。
print(pow(4, 0.5)) # 输出2.0
print(type(pow(4, -0.5))) # 输出<class 'float'>
print(pow(4, 2)) # 输出16
print(type(pow(4, 2))) # 输出<class 'int'>
- 参数
z
不能为0
当参数z
为0
时,Python
会抛出异常。
print(pow(4, 2, 0))
'''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: pow() 3rd argument cannot be 0
'''
- 参数
z
存在时,x
和y
只能是整数 当z
存在时,x
和y
必须时整数。否则Python
会抛出异常。
print(pow(3, 0.7, 1))
'''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pow() 3rd argument not allowed unless all arguments are integers
'''
自定义pow函数
问题描述: 输入一个数值 x
和一个正整数 n
,并调用自定义的 pow()
函数计算并输出 x
的 n
次方。
编程要求
根据提示,在右侧编辑器补充代码,完善计算并输出 x
的 n
次方的小程序。
测试说明
平台会对你编写的代码进行测试:
测试输入:
2
16
预期输出:
65536.0
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def pow(x, y):
return 1.0*x**y
a = eval(input())
b = eval(input())
print(pow(a, b))
第7关 fabs() 函数
任务描述
本关任务:编写一个使用自定义的fabs()
函数输出的小程序。
相关知识
为了完成本关任务,你需要掌握:
- fabs()函数
- 自定义的fabs()函数
python中的fabs() 函数
fabs()
函数返回数字的绝对值,如 math.fabs(-5)
返回 5.0
.
与 abs()
函数不同的是, fabs()
函数返回的是浮点型的值。
- 参数
x 数值表达式 - 返回值
返回数值的绝对值。
代码示例:
import math
math.fabs(x)
#注意:fabs() 是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。
代码示例:
import math
print(math.fabs(-45)) # 45.0
自定义的fabs()函数
问题描述: 输入一个数值 x
,并调用自定义的 fabs()
函数计算并以浮点数类型输出这个数的绝对值。
编程要求
根据提示,在右侧编辑器补充代码,使用调用自定义的 fabs()
函数输出相应数值。
测试说明
平台会对你编写的代码进行测试:
测试输入:-3
;
预期输出:
3.0
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def fabs(x):
"""返回x的绝对值"""
return -x if x<0 else x
if __name__ == '__main__':
n = float(input())
print(fabs(n))
第8关 汽车迷
任务描述
小明是一个汽车迷,看到什么汽车马上就可以说出汽车的生产年份、型号和品牌。定义一个函数,可以输出汽车的介绍。
例如输入:
2020 AMG_S65 奔驰
可以输出:
这是一辆2020年生产,型号是AMG_S65的奔驰牌汽车。
要求函数具有以下功能:当用户只输入生产年份、型号时,品牌按“宝马”输出。
输入格式
输入用空格分隔的年、型号和品牌(品牌可能没有)
输出格式
这是一辆年生产,型号是的牌汽车。( 根据用户输入进行替换)
示例
输入:2020 AMG_S65 奔驰
输出:
这是一辆2020年生产,型号是AMG_S65的奔驰牌汽车。
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def Car(*ls): # 括号里补充你的代码
#####
brand = '宝马'
if len(ls)>2:
brand = ls[-1]
return f'这是一辆{ls[0]}年生产,型号是{ls[1]}的{brand}牌汽车。'
# 以下内容不要修改
ls = input().split() # 根据空格切分输入字符串为列表
print(Car(*ls)) # 调用函数,取列表中的全部数据做参数
第9关 编写函数输出自除数
任务描述
一个不含0的数,如果它能被它的每一位除尽,则它是一个自除数。例如128是一个自除数,因为128能被1、2、8整除。编写函数selfDivisor(num)
判断num
是否为自除数,使用该函数输出不大于N的所有自除数。
(注意,含有数字0的数不是自除数)
输入格式
输入为一行,一个正整数N(N>=1)。
输出格式
输出为一行,是不大于N的所有自除数,每个数后面有一个空格。
示例 1
输入:1
输出:1
示例 2
输入:22
输出:1 2 3 4 5 6 7 8 9 11 12 15 22
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
def selfDivisor(num):
for i in str(num):
if i=='0' or num%int(i):
return False
return True
num = int(input())
for i in range(1, num+1):
if selfDivisor(i):
print(i, end=' ')
第10关 二分法求平方根B
任务描述
设计一个用二分法计算一个大于或等于 0
的实数 n
的平方根的函数sqrt_binary(n)
,实数 n
和计算精度控制由用户在同一行内输入,用逗号进行分隔,输出结果严格保留8
位小数。当(abs(x * x - n) )
小于或等于设定的精度时,近似认为 x * x == n
。
注:初始区间取[0,n+0.25]
输入格式
在同一行内输入一个浮点数 n
(大于或等于0)和一个代表精度的浮点数(可用1e-m
格式输入),逗号分隔。
输出格式
第一行输出用自己设计的函数计算得到的平方根
第二行输出用math库开平方函数计算得到的平方根
示例
输入:5.0,1e-7
输出:
2.23606796
2.23606798
参考代码
# 转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487
import math
def sqrt_binary(n, e):
low, high = 0, n+0.25
while True:
mid = (low+high)/2
if abs(mid**2 - n) < e:
return mid
else:
if mid**2 > n:
high = mid
else :
low = mid
n, e = map(eval, input().split(','))
print(f'{sqrt_binary(n, e):.8f}')
print(f'{math.sqrt(n):.8f}')