当前位置:   article > 正文

Python头歌第四章作业(初级部分)_头歌python第四章函数自学引导

头歌python第四章函数自学引导

目录

任意数量参数

汽车迷

编写函数输出自除数

二分法求平方根


任意数量参数

定义一个函数 say_hi_multi_parameter,使之可接收任意数量的姓名为参数,调用函数时,可以传递多个参数。 有时候你预先不知道函数需要多少实参,此时可以给函数传递一个用 “*” 开头的序列类型的参数,例如:“*id” ,形参名 id 前面的星号会让 Python 创建一个空元组,将收集到的所有实参值都封装到这个元组里。

编程要求

根据提示,在右侧编辑器补充代码,完善一个能任意数量参数进行计算机问候的小程序。

代码实现

  1. def say_hi_multi_parameter(*name): # 括号里填上参数
  2. # 对齐此处补充代码
  3. for i in name:
  4. print(f'{i},你好!')
  5. #调用say_hi_multi_parameter并传入参数
  6. say_hi_multi_parameter('孟浩然')
  7. say_hi_multi_parameter('杜甫', '李白', '柳宗元', '李商隐')

测试说明

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

输入格式 无输入

输出格式 分行对每个传入的参数输出“XXX,你好!”

输出: 孟浩然,你好! 杜甫,你好! 李白,你好! 柳宗元,你好! 李商隐,你好!

汽车迷

这题的难点在于不清楚没有输入品牌时怎么输出宝马

任务描述

小明是一个汽车迷,看到什么汽车马上就可以说出汽车的生产年份、型号和品牌。定义一个函数,可以输出汽车的介绍。

例如输入: 2020 AMG_S65 奔驰

输出: 这是一辆2020年生产,型号是AMG_S65的奔驰牌汽车

要求函数具有以下功能:当用户只输入生产年份、型号时,品牌按“宝马”输出。

代码实现

  1. def Car(year,sty,*brand): # * 为了让后面传入的形成一个元组
  2. #####
  3. if brand != None: # 如果有品牌输入
  4. brand = brand[0]
  5. else:
  6. brand = '宝马'
  7. return f'这是一辆{year}年生产,型号是{sty}{brand}牌汽车。'
  8. ls = input().split() # 根据空格切分输入字符串为列表
  9. print(Car(*ls)) # 调用函数,取列表中的全部数据做参数

输入格式

输入用空格分隔的年、型号和品牌(品牌可能没有)

输出格式

这是一辆年生产,型号是的牌汽车。( 根据用户输入进行替换)

示例

输入: 2020 AMG_S65 奔驰
输出: 这是一辆2020年生产,型号是AMG_S65的奔驰牌汽车。

编写函数输出自除数

任务描述

一个不含0的数,如果它能被它的每一位除尽,则它是一个自除数。例如128是一个自除数,因为128能被1、2、8整除。编写函数selfDivisor(num)判断num是否为自除数,使用该函数输出不大于N的所有自除数。 (注意,含有数字0的数不是自除数)

代码实现

  1. def selfDivisor(num):
  2. if '0' in str(num):
  3. return False # 包含数字0的不是自除数
  4. for c in str(num): # 对数字num中的每位数字进行遍历
  5. if num % int(c) != 0: # 测试num的每一位是否是num的因子
  6. return False # 如果存在不能整除的数,则不是自除数
  7. # 如果for遍历顺利结束,未遇到return,则执行else子句,返回True
  8. return True
  9. n=int(input())
  10. for num in range(1,n+1): # 注意不大于包括等于n
  11. if selfDivisor(num): # 调用函数,当返回值为True时,该数为自除数,输出这个数
  12. print(num,end=' ') # 输出以空格结尾

输入格式

输入为一行,一个正整数N(N>=1)。

输出格式

输出为一行,是不大于N的所有自除数,每个数后面有一个空格。

示例 1

输入: 1 输出: `1``

示例 2

输入: 22 输出: 1 2 3 4 5 6 7 8 9 11 12 15 22

二分法求平方根

任务描述

设计一个用二分法计算一个大于或等于 0 的实数 n 的平方根的函数sqrt_binary(n),实数 n和计算精度控制由用户在同一行内输入,用逗号进行分隔,输出结果严格保留8位小数。当(abs(x * x - n) )小于或等于设定的精度时,近似认为 x * x == n。 注:初始区间取[0,n+0.25]

代码实现

  1. import math
  2. def sqrt_binary(num, accuracy):
  3. """接收一个浮点数num和一个表示计算精度的浮点数accuracy为参数,用二分法计算浮点数的平方根x,
  4. 当 abs(x * x - num) <= accuracy时认为达到计算精度,以浮点数类型返回计算得到的平方根。"""
  5. low, high = 0, num + 0.25 # 设定初始区间
  6. while True: # 构建无限循环
  7. x = (high + low) / 2 # 假设平方根落在区间的二分之一处,即中点
  8. if abs(x * x - num) <= accuracy: # 当误差小于计算精度时,终止循环
  9. return x # 返回当前的x值为平方根
  10. elif x * x - num < 0: # 当前x的平方小于num时,平方根应该位于右侧区间
  11. low = x # 以当前数值为区间下限,缩小区间为原来的一半
  12. else: # 当前x的平方大于num时,平方根应该位于左侧区间
  13. high = x # 以当前数值为区间上限,缩小区间为原来的一半
  14. n, error = map(float, input().split(',')) # 输入浮点数 n 和计算精度
  15. print('{:.8f}'.format(sqrt_binary(n, error))) # 调用二分法函数计算平方根
  16. print('{:.8f}'.format(math.sqrt(n))) # 用math库中的sqrt()计算平方根

初始区间的设置还不是太懂

输入格式

在同一行内输入一个浮点数 n(大于或等于0)和一个代表精度的浮点数(可用1e-m格式输入),逗号分隔。

输出格式

第一行输出用自己设计的函数计算得到的平方根 第二行输出用math库开平方函数计算得到的平方根

示例

输入: 5.0,1e-7 输出: 2.23606796 2.23606798

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/432462
推荐阅读
相关标签
  

闽ICP备14008679号