实验五 函数设计

1. 编写程序,利用元组作为函数的返回值,求序列类型中的最大值、最小值和元素个数,并编写测 试 代 码 , 假 设 测 试 数 据 分 别 为

s1=[9,7,8,3,2,1,55,6] 、

s2=[" apple","pear" melon","kiwi"]

s3=" TheQuickBrownFox"。

运行效果参见下图。

s1=[9,7,8,3,2,1,55,6]
s2=["apple","pear","melon","kiwi"]
s3="TheQuickBrownFox"
def a(m):
    li=list(m)
    maxx=max(m)
    minx=min(m)
    lenx=len(m)
    return maxx,minx,lenx
n=a(s1)
print('list=',s1)
print(str.format("最大值 = {},最小值={},元素个数={}",n[0],n[1],n[2]))
n=a(s2)
print('list=',s2)
print(str.format("最大值 = {},最小值={},元素个数={}",n[0],n[1],n[2]))
n=a(s3)
print('list=',s3)
print(str.format("最大值 = {},最小值={},元素个数={}",n[0],n[1],n[2]))
s=input('请输入:')
a = s.split(',')
a=[int(a[i])for i in range(len(a))] #需要转换为int值,不可省,不然是字符串
z=list(a)
def a(m):

    b=max(m)
    c=min(m)
    d=len(m)
    return b,c,d
n=a(z)
print('list=',s)
print(str.format('最大值={},最小值={},元素个数={}',n[0],n[1],n[2]))
2. 设计一个函数 , 实现输入一个五位数的正整数 ( 程序要对输入数据 的合法性进行检查), 对输入的数据加密后再返回,加密规则 : 每位数字都加上 7, 然后用 10 取模 , 再将得到的结果交换顺序 : 第一位和第 二位交换, 第三位和第五位交换 , 第一位和第四位交换。

#取模运算是求两个数相除的余数

def a(m):
    b=list(m)
    b=[int(b[i])for i in range(len(b))]
    for i in range(0,5):
        b[i]=(b[i]+7)%10
    b[0],b[1]=b[1],b[0]
    b[2],b[4]=b[4],b[2]
    b[0],b[3]=b[3],b[0]
    return(''.join(map(str,b)))
n=input('输入一个五位整数:')
z=int(n)
if(z//1000!=0):
    s=a(n)
    print('加密后的数据为',s)
else:
    print('输入错误,请重新输入')
3. 请编写一个程序 , 使用字典存储学生信息 ( 自己编写至少十个学生 的信息 ), 学生信息包括学号和姓名 , 请根据学生学号从小到大输出 学生的信息。
提示:使用sorted 函数并指定其对应的参数 key 的值。
dict1={1:'张一',2:'李二',3:'王三',4:'陈四',5:'鹿五',6:'唐六',7:'刘七',8:'赵八',9:'曹九',10:'范十'}
dict2=sorted(dict1.items(),key=lambda x: x[0])
print(dict2)
#sorted(d.items(),key=lambda x:x[1])
#d.items():待排序对象
#key=lambda x:x[1]:选择进行排序的对象。
dict1={1:'张一',2:'李二',3:'王三',4:'陈四',5:'鹿五',6:'唐六',7:'刘七',8:'赵八',9:'曹九',10:'范十'}
dict2=sorted(dict1)
dict3=[]
for i in dict2:
    dict3.append(dict1[i])
dict3=dict(zip(dict2,dict3))    #打包
print(dict3)
4. 首先 , 使用标准库 random 生成一个包含 50 个介于 1~100 的随机整数的列表, 编写函数 def isPrime(n) 用来测试整数 n 是否为素数 ; 接下来使用内置函数 filter( 把函数 isPrime() 作用到包含若干随机整 数的列表 lst , 最后程序输出一个列表 , 其中只包含列表 lst 中不是素数的那些整数。
from random import randint
list1=[]
for i in range(0,50):
    x=randint(1,101)
    list1.append(x)
def isPrime(n):
    a=[2,3,5,7,9]
    for i in a:
        if n%i==0 and n!=[2,3,5,7,9]:
            return n
a=filter(isPrime,list1)
print(list(a))
import random
x = [random.randint(1, 101) for i in range(50)]
def isPrime(n):
 	if n == 1:
	   return 1
 	for i in range(2, int(n ** 0.5) + 1):
	   if n % i == 0:
 		  return 1
	   return 0
print(list(filter(isPrime, x)))

5. 编写程序 , 清分别使用递归和非递归方式实现。定义一个求阶乘的函数 fact(n) ,并编写测试代码,要求输入整数 (n 0) 。运行效果如下图所示。
a=int(input('请输入整数:'))
def fact(n):
    summ=1
    while(n!=0):
        summ=summ*n
        n=n-1
    return summ
print('阶乘为',fact(a))
递归方法:直接或间接地调用自身的算法/函数称为递归算法/函数
def face(n):
    if n==0:
        sum=1
    else:
        sum=face(n-1)*n
    return sum

a=int(input('请输入整数:'))
print(face(a))

6. 编写程序实现斐波那契数列,斐波那契数列: 1 1 2 3 5 8 、13、 21 34 、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1 F(2)=1, F(n)=F(n-1)+F(n-2) n>=3 n N* )。
def Fi(n):
    if n<=2:
        return 1
    else:
        return Fi(n-1)+Fi(n-2)
a=int(input('请输入整数,确定想输出数列的前多少个数:'))

for i in range(1,a+1):
    s=Fi(i)
    print(s)

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值