【头歌-Python】Python第四章作业(初级)

谛凌 2024-07-05 09:35:01 阅读 98

转载标注出处:https://blog.csdn.net/qq_45801887/article/details/134908487

参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~

python第四章作业(初级)

第1关 无参无返回值函数参考代码

第2关 无参有返回值函数参考代码

第3关 有参有返回值函数参考代码

第4关 多参函数参考代码

第5关 任意数量参数参考代码

第6关 pow函数详解参考代码

第7关 fabs() 函数参考代码

第8关 汽车迷参考代码

第9关 编写函数输出自除数参考代码

第10关 二分法求平方根B参考代码

第1关 无参无返回值函数

任务描述

本关任务:编写一个无参无返回值函数的小程序。

相关知识

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

无参无返回值函数

无参无返回值函数

定义一个无参数、无返回值的函数 <code>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_namegender,接受人名和性别(“男”或“女”)的字符串为参数,函数的返回值为“尊敬的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 的内置函数,它计算并返回 xy 次方的值。

pow(x, y, z)

名称 备注 说明
x 底数 不可省略的参数
y 指数 不可省略的参数
z 取余数字 可省略的参数。当z存在时,函数返回值等于 pow(x, y)%z

编程示例:

参数 z 省略时 当省略取余数字 z 时,pow 函数返回 xy 次方的值。

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 参数省略时,返回值是 xy 次方。

print(pow(2, 4)) # 输出16

z 参数省略时,x 和 y 的值可以是整数和浮点数 当 xy 存在浮点数时,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 当参数 z0 时,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 存在时,xy 只能是整数 当 z 存在时,xy 必须时整数。否则 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() 函数计算并输出 xn 次方。

编程要求

根据提示,在右侧编辑器补充代码,完善计算并输出 xn 次方的小程序。

测试说明

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

测试输入:

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=' ')code>

第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}')



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。