Python第7-8天作业
作业1:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
[10, 8, 5, 3, 27, 99]
num = 0
ls = [10, 8, 5, 3, 27, 99]
for i in ls:
a = i % 2
if a == 0:
num = i // 2 + num
else:
num = i // 2 + num + 1
print("需要取%s次"%(num))
作业2:如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".
ls = []
for i in range(2, 101):
flag = True
for j in range(2, i):
if i % j == 0:
flag = False
break
if flag:
ls.append(i)
index = 0
print(ls)
while index < len(ls) - 1:
first = ls[index]
second = ls[index + 1]
if second - first == 2:
print(f"{first}和{second}之间是孪生素数")
index += 1
作业3:给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和
ls = [1,2,3,4,5,6,7,8,9,10]
print("列表",ls)
num_max = ls[0]
num_min = ls[0]
num_and = 0
for i in range(1,len(ls)):
if num_max < ls[i]:
num_max = ls[i]
elif num_min > ls[i]:
num_min = ls[i]
else:
pass
print("最大值:",num_max)
print("最小值:",num_min)
for i in ls:
num_and += i
print("和:",num_and)
num_average = num_and/len(ls)
print("平均值:",num_average)
作业4:将list中的重复数据去重,至少使用两种方案
#1.将列表转换成为集合再转换成为列表
a = [1,2,36,1,2,88,98,56]
#将转换前的列表输出
print("去重前:",a)
#b是转换后的新列表
b = list(set(a))
print("去重后:",b)
#2.利用循环进行去重
j = []
for i in a:
if i not in j:
j.append(i)
print("去重后:",j)
作业5:两个列表进行合并操作
作业6: 使用列表判断一个列表是否在另外一个列表中
#根据是否存在交集来判断列表是否在另一个列表中,若存在交集,则自然证明存在
a = [1,2,3,6,8,9,10,11,12]
b = [1,2,3]
j = list(set(a).intersection(set(b)))
print(j)
作业7:列表的反转 列表的排序
作业8:如何将0-10随机存入列表中
import random
ls = []
for i in range(10):
ls.append(random.randint(0, 10))
print(ls)
第八天作业
作业1:完成一个登录注册案例(要求使用容器保存数据)
import sys
users = []
while True:
print("欢迎登录我们的用户管理系统")
print("\t\t 1、用户注册")
print("\t\t 2、用户登录")
print("\t\t 3、退出系统")
choice = input("请选择您的操作:")
if choice == "1":
while True:
print("欢迎进入到用户注册页面")
username = input("请输入用户名称:")
password = input("请输入用户密码:")
confirm_password = input("请再次确认密码:")
if username == None or len(username) == 0:
print("对不起,用户为空")
continue
flag = False
for u in users:
if u.get("username") == username:
print("对不起,该用户已经存在,请重新注册")
flag = True
break
if flag:
continue
if len(password) < 3:
print("对不起,密码长度不能少于3位")
continue
if password != confirm_password:
print("两次密码不一致")
continue
user = {"username": username, "password": password}
users.append(user)
print("用户注册成功,请登录")
break
elif choice == "2":
print("欢迎进入到用户登录页面")
username = input("请输入用户名称:")
password = input("请输入用户密码:")
for user in users:
if user["username"] == username and user.get("password") == password:
print("恭喜您,{},登录成功".format(username))
else:
print("对不起,登录失败,请重新登录~~")
elif choice == "3":
sys.exit()
else:
print("输入有误,请重新选择")
import sys
users = []
while True:
print("欢迎登录我们的用户管理系统")
print("\t\t 1、用户注册")
print("\t\t 2、用户登录")
print("\t\t 3、退出系统")
choice = input("请选择您的操作:")
if choice == "1":
while True:
print("欢迎进入到用户注册页面")
username = input("请输入用户名称:")
password = input("请输入用户密码:")
confirm_password = input("请再次确认密码:")
if username == None or len(username) == 0:
print("对不起,用户为空")
continue
flag = False
for u in users:
if u.get("username") == username:
print("对不起,该用户已经存在,请重新注册")
flag = True
break
if flag:
continue
if len(password) < 3:
print("对不起,密码长度不能少于3位")
continue
if password != confirm_password:
print("两次密码不一致")
作业2:给定一个10个元素的列表,请完成排序(注意,不要使用系统api)
作业3:求 a+aa+aaa+…+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。
num = input("请输入a:")
count = int(input("请输入项数:"))
a = []
s = 0
for i in range(1,count+1):
a.append(num*i)
s += int(num*i)
print(f"{s}={'+'.join(a)}")
作业4:合并两个有序数组,合并后还是有序列表
list1 = [1,2,3,4,5,6]
list2 = [1,11,111,1111,11111]
result = []
while list1 and list2:
if list1[0] < list2[0]:
result.append(list1[0])
list1.remove(list1[0])
else:
result.append(list2[0])
list2.remove(list2[0])
for i in list2:
result.append(i)
result.sort()
print(result)
作业5:给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
import random
ls = [random.randint(0,100) for i in range(10)]
print ("排序前:",ls)
odd = []
even = []
for i in ls:
if i%2 ==0:
even.append(i)
else:
odd.append(i)
even.extend(odd)
print ("排序后:",even)
作业6:将10进制数据转换为二进制,并且统计其中的0和1的数量
def duble1():
n=input('请输入要查询的数:')
m=0
for j in list(bin(int(n))):
if j=='1':
m+=1
print(m)
duble1()
duble1()
作业7:给定一个数组,已知数组中的元素都是成对出现,
现在数组中只有一个元素没有成对,请找出这个元素。
[1,3,1,2,2,8,8]
nums = [1,3,1,2,2,8,8]
nums_dict={}
for i in nums:
nums_dict.setdefault(i,0)
nums_dict[i]+=1
for i in nums_dict:
if nums_dict[i]==1:
print(f'只出现一次的数字为{i}')
作业(选做题):
某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
问题:共有多少种走法?
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0