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()