目录
2.写一个实现裴波那契数列的函数,参数给定输出的个数,并调用:
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合法性的几个特点:
- 是否有三个点
- 每一部分的数字是否大于等于0,小于等于255
首先我们用ip.count()计算点的个数,如果点的个数不等于三,则直接返回格式错误,当点的个数满足时,我们用ip.split()将IP分为四个部分,再使用循环检验每一个部分是否满足条件2即可
如果有问题的话多康康注解,思路我觉的挺清晰的了已经。