首页 > Python资料 博客日记

Python头歌第四章作业(初级部分)

2024-05-11 22:00:03Python资料围观438

文章Python头歌第四章作业(初级部分)分享给大家,欢迎收藏Python资料网,专注分享技术知识

目录

任意数量参数

汽车迷

编写函数输出自除数

二分法求平方根


任意数量参数

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

编程要求

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

代码实现


def say_hi_multi_parameter(*name):    # 括号里填上参数
    # 对齐此处补充代码
    for i in name:
        print(f'{i},你好!')

#调用say_hi_multi_parameter并传入参数
say_hi_multi_parameter('孟浩然')
say_hi_multi_parameter('杜甫', '李白', '柳宗元', '李商隐')

测试说明

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

输入格式 无输入

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

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

汽车迷

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

任务描述

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

例如输入: 2020 AMG_S65 奔驰

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

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

代码实现

def Car(year,sty,*brand): # * 为了让后面传入的形成一个元组
#####
     if brand != None: # 如果有品牌输入
          brand = brand[0] 
     else:
          brand = '宝马'
     return f'这是一辆{year}年生产,型号是{sty}的{brand}牌汽车。'


ls = input().split()  # 根据空格切分输入字符串为列表
print(Car(*ls))       # 调用函数,取列表中的全部数据做参数

输入格式

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

输出格式

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

示例

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

编写函数输出自除数

任务描述

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

代码实现

def selfDivisor(num):
    if '0' in str(num):
        return False          # 包含数字0的不是自除数
    for c in str(num):        # 对数字num中的每位数字进行遍历
        if num % int(c) != 0: # 测试num的每一位是否是num的因子
            return False      # 如果存在不能整除的数,则不是自除数
                    # 如果for遍历顺利结束,未遇到return,则执行else子句,返回True
    return True
 
n=int(input())
for num in range(1,n+1):      # 注意不大于包括等于n
    if selfDivisor(num):      # 调用函数,当返回值为True时,该数为自除数,输出这个数
        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]

代码实现

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

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

输入格式

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

输出格式

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

示例

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


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐