Python task06-1函数的练习和实验

本文提供六道编程练习题的解答方案,包括九九乘法表、斐波那契数列等,通过具体代码实例帮助读者理解和掌握编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.写一个无参函数的九九乘法表,并调用: 

2.写一个实现裴波那契数列的函数,参数给定输出的个数,并调用:

3.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?要求用函数实现,参数给定次数,返回值用元组给出俩个结果(经过多少米和反弹多高),并在主函数中调用打印输出

4.实现九九乘法表的函数,函数中不能输出打印。要求:(1)每行的所有乘法式子构成一个列表(2)所有行构成一个列表。(3)根据上述(1)(2)得到的嵌套列表作为函数结果返回(4)设计一个函数,专门打印输出根据(3)返回的列表(5)并在主函数中调用上述两个函数,输出结果。

5.编写函数, 接收一个列表(包含10个整形数)和一个整形数k, 返回一个新列表. 函数需求:    - 将列表下标k之前对应(不包含k)的元素逆序;    - 将下标k及之后的元素逆序;

6 编写函数,判断输入的ipv4地址的合法性,ipv4地址形如:128.25.11.220。四部分组成,每部分大于等于0小于等于255。中间用英文句点分隔。


1.写一个无参函数的九九乘法表,并调用: 

def fun1():
    for i in range(1,10):
        for j in range(1,i+1):
            print("{}*{}={}\t".format(j,i,i*j),end=" ")
        print()
                       
fun1()

 首先:当 i =1时,j 为[1,2),左闭右开,第一行就是1*1=1,换行;再进入循环,当 i=2 时,j 为[1,3)同样左闭右开,第二行为1*2=2   2*2=4,再换行......其后依次同理,到 i=9 时,右开,所以最多就是9*9=81,停止循环。

2.写一个实现裴波那契数列的函数,参数给定输出的个数,并调用:

def pei(num):
    i=0
    j=1
    count=2
    if num==1:
        print(i,end=" ")
    else:
        print(i,j,end=" ")
    while count<num:
        nth=i+j
        print(nth,end=' ')
        i=j
        j=nth
        count+=1

num=int(input("请输入个数:"))
pei(num)

裴波那契数列以前也应该做过不少次,大家应该也有印象,eg:0 1 1 2 3 5.....这种就叫做裴波那契数列 ,首先:我们可以确定第一个数和第二个数一定是0和1,那么我们就要想万一那个脑子不太灵光的他就是要输1呢,所以一定要用一个if语句把这种情况单独拎出来,之后就正常写就好了;初始化的count我们设为2,当count小于我们输入的那个次数时,下一个数就为前两个数的和,输出这个数之后,数字交换,再进入循环,直到循环结束

3.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?
要求用函数实现,参数给定次数,返回值用元组给出俩个结果(经过多少米和反弹多高),并在主函数中调用打印输出

def fun(n):
    total=100
    hight=50
    num=[]
    for i in range(n-1):
        total=total+hight*2
        hight =hight/2
    num =(total,hight)
    return num

n=int(input())
x=fun(n)
print(x)

 从题面上可以知道

 第一次弹起经过的总路程一定是200m,第一次反弹的高度则是100米的一半50m,for循环中的range(n-1)就是注意这个如果输入值为1的情况,range(0)则循环不执行,直接输出(100,50),同时注意最后结果的输出形式是元组形式

4.实现九九乘法表的函数,函数中不能输出打印。要求:
(1)每行的所有乘法式子构成一个列表
(2)所有行构成一个列表。
(3)根据上述(1)(2)得到的嵌套列表作为函数结果返回
(4)设计一个函数,专门打印输出根据(3)返回的列表
(5)并在主函数中调用上述两个函数,输出结果。

def fun1():
    return [["%d*%d=%d"%(j,i,i*j) for j in range(1,i+1)] for i in range(1,10)]
def fun2(lists):
    for i in lists:
        for j in i:
            print(j,end="\t")
        print()
fun2(fun1())

这道题其实只有两步,fun1 和fun2,具体的说就是fun1将乘法表弄成这种列表的形式

  

 然后fun2就负责接收这个列表,然后我们可以看到,i是在这个列表中的元素,eg:当i=1时,j=“1*1=1”,然后换行,当i=2时,j=“1*2=2”和“2*2=4”......依次下去

5.编写函数, 接收一个列表(包含10个整形数)和一个整形数k, 返回一个新列表.
 函数需求:
    - 将列表下标k之前对应(不包含k)的元素逆序;
    - 将下标k及之后的元素逆序;

def fun(lists,k):
    return lists[:k][-1::-1]+lists[k:][-1::-1]
   
lists=[2,5,7,3,9,1,4]
k=2
list2=fun(lists,k)
print(list2)

k是下标,k是下标,k是下标,然后左闭右开,左闭右开,将k下标以前的单独作为一个列表,k及k之后的又单独作为一个列表,之后两个列表分别取反,然后将两个列表合成一个列表即可

6 编写函数,判断输入的ipv4地址的合法性,ipv4地址形如:128.25.11.220。四部分组成,每部分大于等于0小于等于255。中间用英文句点分隔。

def fun(ip):
    if ip.count('.')!=3:
        return('{}为错误的格式'.format(ip))
    list=ip.split('.')
    for i in list:
        num=int(i)
        boolean=True
        if num<0 or num>255:
            boolean=False
            break
    if boolean:
        return('{}为正确的格式'.format(ip))
    else:
        return('{}为错误的格式'.format(ip))
            
x="2.66.3.7.6"
m=fun(x)
print(m)

IP合法性的几个特点:

  1. 是否有三个点
  2. 每一部分的数字是否大于等于0,小于等于255

首先我们用ip.count()计算点的个数,如果点的个数不等于三,则直接返回格式错误,当点的个数满足时,我们用ip.split()将IP分为四个部分,再使用循环检验每一个部分是否满足条件2即可

如果有问题的话多康康注解,思路我觉的挺清晰的了已经。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是祈哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值