第五轮作业--函数

1. 第四轮作业函数封装

1.1 有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币

[10, 8, 5, 3, 27, 99]

def sum():
    j=0
    figure=list([10,8,5,3,27,99])
    for i in figure:
        if i%2==0:
            j +=i//2
        else:
            j+=i//2+1
    print("最少次数为:",j)
    return j


sum()

1.2 如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

def sum():
    prime=[]
    for i in range(2,101):
        for j in range(2,100):
            if (i%j==0):
                break
        if(i==j):
            prime.append(i)
    print(prime)
    twin=[]
    for k in range(0,25):
        if (k+1)==25:
            break
        if prime[k+1]-prime[k]==2:
            twin.append(prime[k+1])
            twin.append(prime[k])
    twin.remove(5)
    twin.sort()
    print(twin)


sum()

1.3 给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

def sum(degree,figure):
    number=0
    print("元素个数:",len(figure))
    for i in figure:
        number+=i
    figure.sort()
    min=figure[0]
    max=figure[len(figure)-1]
    average=number/len(figure)
    print("和:%f,平均值:%f,最大值:%f,最小值:%f"%(number,average,max,min))


figure=[]
degree=int(input("输入要输入总个数:"))
for i in range(0,degree):
    a=int(input("输入数字:"))
    figure.append(a)
print(figure)
sum(degree,figure)

1.4 将list中的重复数据去重,至少使用两种方案

#法一
def sum(number):
    redundant=[]
    number.sort()
    for i in range(0,len(number)-1):
        if number[i]==number[i+1]:
            redundant.append(number[i])
    for j in redundant:
            number.remove(j)
    print(number)


number=[]
degree=int(input("输入要输入总个数:"))
for i in range(0,degree):
    a=int(input("输入数字:"))
    number.append(a)
sum(number)

#法二
def sum(number):
    number=set(number)
    print(number)


number=[]
degree=int(input("输入要输入总个数:"))
for i in range(0,degree):
    a=int(input("输入数字:"))
    number.append(a)
sum(number)

1.5 两个列表进行合并操作

def sum(a,b):
    #法一
    print(a+b)
    #法二
    a.extend(b)
    print(a)


a=[1,2,5,6,7,8,9,5,6]
b=["d","f","h","j","u","r"]
sum(a,b)

1.6 使用列表判断一个列表是否在另外一个列表中

def sum(list1,list2):
    flag=0
    for i in list1:
        for j in list2:
            if i==j:
                flag+=1
    if flag==len(list2):
        print("list2在list1中")
    else :
        print("list2不在list1中")


list1=[1,2,3,4,5,6,7,8,9,10]
list2=[1,2,3]
sum(list1,list2)

1.7 列表的反转 列表的排序

#列表的反转  列表的排序
def rank(a):
    #排序
    a.sort()
    print(a)
    #反转
    a.reverse()
    print(a)


a=[]
degree=int(input("输入要输入总个数:"))
for i in range(0,degree):
    b=int(input("输入数字:"))
    a.append(b)
rank(a)

1.8 如何将0-10随机存入列表中

import random

def sum(figure):
    figure=set(figure)
    while True:
        a = random.randint(0, 10)
        figure.add(a)
        if len(figure)==11:
            break
    figure=list(figure)
    print(figure)


figure=[]
sum(figure)

1.9 完成一个登录注册案例(要求使用容器保存数据)

#判断安全级别
def passworded(user,password):
    a = "123456789"
    b = "qwertyuiopasdfghjklzxcvbnm"
    c = "~!@#$%^&*()_=-/,.?<>: ;[]{}\|"
    while True:
        flag1, flag2 = 0, 0
        user= input("输入用户名:")
        password = input("输入密码:")
        # 判断密码长度
        if len(password) <= 8:
            flag1 += 1
        elif len(password) > 8:
            flag1 += 1
        elif len(password) > 16:
            flag1 += 1
        # 判断字符串包含的类型
        for i in password:
            if i in a:
                flag2 += 1
                break
        for i in password:
            if i in b:
                flag2 += 1
                break
        for i in password:
            if i in c:
                flag2 += 1
                break
        # 判断密码强度
        if flag1 == 1 and flag2 == 1:
            print("简单密码")
            break
        elif flag1 == 1 and flag2 == 2:
            print("中等密码")
            break
        elif flag1 == 2 and flag2 == 3:
            print("高级密码")
            break
        else :
            print("请重新输入密码")
    return user,password


#把注册信息保存到容器中
def login(user,password):
    register = []
    while True:
        user,password=passworded(user,password)
        a={'user':user,'password':password}
        register.append(a)
        esc=input("输入y退出:")
        if esc=="y":
            break
    return register


#主函数
print("注册")
user = 0
password = 0
register=login(user,password)
print(register)

1.10 使用控制台,完成英雄联盟购买英雄

import sys

#判断安全级别
def passworded(user,password):
    a = "123456789"
    b = "qwertyuiopasdfghjklzxcvbnm"
    c = "~!@#$%^&*()_=-/,.?<>: ;[]{}\|"
    while True:
        flag1, flag2 = 0, 0
        user= input("输入用户名:")
        password = input("输入密码:")
        # 判断密码长度
        if len(password) <= 8:
            flag1 += 1
        elif len(password) > 8:
            flag1 += 1
        elif len(password) > 16:
            flag1 += 1
        # 判断字符串包含的类型
        for i in password:
            if i in a:
                flag2 += 1
                break
        for i in password:
            if i in b:
                flag2 += 1
                break
        for i in password:
            if i in c:
                flag2 += 1
                break
        # 判断密码强度
        if flag1 == 1 and flag2 == 1:
            print("简单密码")
            break
        elif flag1 == 1 and flag2 == 2:
            print("中等密码")
            break
        elif flag1 == 2 and flag2 == 3:
            print("高级密码")
            break
        else :
            print("请重新输入密码")
    return user,password


#把注册信息保存到容器中
def login(user,password):
    register = []
    while True:
        user,password=passworded(user,password)
        a={'user':user,'password':password}
        register.append(a)
        esc=input("输入y退出:")
        if esc=="y":
            break
    return register


#主函数
register = []
while True:
    print("\n\t\t 英雄联盟商城登录界面\n")
    print("~ *" * 28)
    print("\n")
    print("\t\t\t 1.用户登录\n")
    print("\t\t\t 2.新用户注册\n")
    print("\t\t\t 3.退出系统\n")
    print("~ *" * 28)
    print("\n")
    choice=int(input("(温馨提示)请输入您的选项:"))
    if choice==2:
        while True:
            print("注册")
            user = 0
            password = 0
            register = login(user, password)
            esc = input("输入y退出:")
    elif choice==1:
        print("登陆")
        dicter={}
        user = input("输入用户名:")
        password = input("输入密码:")
        dicter['user']=user
        dicter['password']=password
        for i in register:
            if dicter==i:
                print("\n\t\t 英雄联盟商城首页\n")
                print("~ *" * 28)
                print("\n")
                print("\t\t\t 1.进入英雄超市\n")
                print("\t\t\t 2.休闲小游戏\n")
                print("\t\t\t 3.退出登录\n")
                print("~ *" * 28)
                print("\n")
                choice2 = int(input("(温馨提示)请输入您的选项:"))
                if choice2==1:
                    print("\t\t英雄联盟英雄列表")
                    print("~ *" * 20)
                    print("\r")
                    print("编号 姓名 昵称 价格 库存 描述")
                    print("1 纳尔 迷失之牙 3500 0 丛林不会原谅盲目与无知")
                    print("2 锐雯 放逐之刃 4000 0 她是残忍高效的战士")
                    print("3 薇恩 暗夜猎手 3500 0 这个世界不想人们想象的那么美好")
                    print("4 扎克 生化魔人 3000 0 即使你没有脊柱,你也必须站起来")
                    print("5 阿狸 九尾妖狐 10000 100 一人之行可灭世,众人之勤可救世!")
                    print("~ *" * 20)
                    x = int(input('(温馨提示)请输入您要购买的英雄编号:'))
                    print(end='\n')
                    while x <= 5:
                        if x == 5:
                            print("\t\t英雄商城购买英雄")
                            print("~*" * 20)
                            print("\r")
                            print("\t英雄名称:九尾妖狐(史诗)")
                            print("\t英雄属性:生命值428(+85)/能量值200(+0)/移动速度425/攻击力55.8(+3.2)")
                            print("\t\t攻击速度0.651(+3.1%)/护甲值24(+1.25)/攻击距离125")
                            print("\r")
                            print("\t英雄座右铭:一人之行可灭世,众人之勤可救世!")
                            print("\t英雄价格:10000")
                            print("\t活动折扣:9.5")
                            print("\r")
                            print("插播广告:当风云变色,当流离失所,世界不再是旧日模样")
                            print("你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡")
                            print("~ *" * 20)
                            y = input('(温馨提示)请付款:')
                            if y == "10000":
                                print("\t\t英雄商城购买英雄")
                                print("英雄购买票据")
                                print("~ *" * 20)
                                print("\r")
                                print("\t英雄名称:九尾妖狐(史诗)")
                                print("\t英雄价格:10000")
                                print("\t活动折扣:9.5")
                                print("\r")
                                print("\t应付付款:9500")
                                print("\t实际付款:10000")
                                print("\t找零:500")
                                print("\r")
                                print("插播广告:当风云变色,当流离失所,世界不再是旧日模样")
                                print("你是否会为了自己的梦想战斗,直至力战身亡,直至彼岸他乡")
                                print("~ *" * 20)
                                input('(温馨提示)按任意键返回初始菜单:')
                                break
                            print(end='\n')
                        elif x == 1 or x == 2 or x == 3 or x == 4:
                            print("该英雄没有库存")
                            print("输入大于5的数则退出系统")
                            x = int(input("请输入数字:"))
                            continue
                        else:
                            break
                    print("已退出登陆")
                elif choice2==2:
                    pass
                elif choice2==3:
                    break
    elif choice==3:
        sys.exit()

2. 判断以下哪些不能作为标识符

A、a
B、¥a
C、_12
D、$a@12
E、false
F、False

答案:B,D,F


3. 输入数,判断这个数是否是质数(要求使用函数 + for循环)

def prime(number):
    for i in range(2,number+1):   #穷举法
        if number%i==0:   
            break
    if number==i:               #当number能一直除到本身。则为质数
        print("这个数是质数")
    else :
        print("这个数不是质数")


#主函数
number=int(input("输入一个数:"))
prime(number)

4. 求50~150之间的质数是那些?

def prime():
    for i in range(50,151):     #穷举法
        for j in range(2,i+1):
            if i%j==0:
                break
        if j==i:               #当number能一直除到本身。则为质数
            print(i,end=" ")
    print()

#主函数
prime()

5. 打印输出标准水仙花数,输出所有三位数水仙花数

def daffodil():
    for i in range(100,1000):
        if (i%10)**3+(i%100//10)**3+(i//100)**3==i:
            print(i)


daffodil()

6. 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

def number():
    sum1 = 0
    for num in range(0,100):
        num=str(num)
        for i in num:
            i=int(i)
            sum1+=i
        num=int(num)
        if (num-sum1)%9!=0:
            print("该命题错误")
            break


number()

7. 一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

def number():
    for i in range(10000,100000):
        A=(i*10)+7
        B=i+700000
        if B/A==5:
            print(i)


number()

8. 有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来

def number():
    molecule=0      #分子
    denominator=0   #分母
    for molecule in range(1,140):
        for denominator in range(1,140):
            if molecule * denominator==140:
                if molecule<denominator:
                    if molecule%2==0 and denominator%2==0:
                        for i in range(2,molecule+1):
                            if molecule%i==0 and denominator%i==0:
                                print(int(molecule/i),"/",int(denominator/i))
                    else :
                        print(int(molecule), "/", int(denominator))


number()

9. 某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去除余数都是1,求这 个自然数.

def sumber():
    flag=0
    for i in range(80,100000):
        figure=i/80
        if figure%7==0:
            if figure%2==1 and figure%3==1 and figure%4==1 and figure%5==1 and figure%6==1:
                print(i)


sumber()

10. 编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和

def sumber():
    for i in range(100,1000):
        if (i/11)==((i%10)+(i//100)+(i//10%10)):
            print(i)


sumber()

11. 有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币

[10, 8, 5, 3, 27, 99]
def sumber():
    j=0
    figure=list([10,8,5,3,27,99])
    for i in figure:
        if i%2==0:
            j +=i//2
        else:
            j+=i//2+1
    print("最少次数为:",j)


sumber()

12. 求1~100之间不能被3整除的数之和

def sumber():
    j=0
    for i in range(1,101):
        if i%3!=0:
            j+=i
    print(j)


sumber()

13. 给定一个正整数N,找出1到N(含)之间所有质数的总和

def sumber(figure):
    digit=0
    for i in range(2,figure+1):
        for j in range(2,figure):
            if i%j==0:
                break
        if i==j:
            digit+=i
    print(digit)


figure=int(input("输入一个数:"))
sumber(figure)

14. 计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1…)

import math

def sumber():
    PI=0
    flag1=flag2=flag3=1
    while math.fabs(flag2)>=0.000001:
        PI += flag2
        flag1 = -flag1
        flag3 += 2
        flag2=flag1/flag3
    print("PI=",4*PI)


sumber()

15. 求 a+aa+aaa+…+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定

def number(n):
    count=0
    num=0
    for i in range(n):
        num+=n*10**10
        count+=num
    return count


num=int(input("请输入一个1-9的整数:"))
print(number(num))

16. 合并两个有序数组,合并后还是有序列表

def listed():
    a=[1,2,3,4,5,6,7,8,9,10]
    b=[11,12,13,14,15,16,17,18,19]
    a.extend(b)
    print(a)


listed()

17. 给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

def listed():
    list1=[1,15,651,49,497,26,2,31,4,5,66,7,8,9,10,13,19,37,39]
    list2=[]
    list3=[]
    for i in range(0,len(list1)):
        if list1[i]%2==0:
            list2.append(list1[i])
            list2.sort()
        else:
            list3.append(list1[i])
            list3.sort()
    list1=[]
    list1.extend(list2)
    list1.extend(list3)
    print(list1)


listed()

18. 将10进制数据转换为二进制,并且统计其中的0和1的数量

def number(figure):
    num=[]
    flag1=flag2=0
    digit=str(bin(figure))
    print(digit)
    for i in digit:
        num.append(i)
    print(num)
    for j in range(2,len(num)):
        if num[j]=="0":
            flag1 += 1
        else:
            flag2 += 1
    print("0的数量:",flag1,"1的数量:",flag2)


figure=int(input("输入一个数:"))
number(figure)

19. 给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。

[1,3,1,2,2,8,8]
def number():
    num=[1, 3, 1, 2, 2, 8, 8]
    num2=[]
    num.sort()
    print(num)
    for i in range(0,len(num)-1):
        if num[i] == num[i+1] :
            num2.append(num[i])
    for j in num2:
        num.remove(j)
        num.remove(j)
    print(num[0])


number()

20. 给定一个10个元素的列表,请完成排序(注意,不要使用系统api)

def sumber():
    maxed,mined=0,0
    a=[2,5,8,7,4,1,3,6,9,10]
    print(len(a))
    for i in range(len(a)-1):
        for j in range(len(a)-1-i):
            if a[j]>a[j+1]:
                a[j], a[j + 1] = a[j + 1], a[j]
    print(a)


sumber()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值