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



C:\Users\山己几>python D:\day2\有一堆硬币.py
需要取78次

C:\Users\山己几>


作业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



C:\Users\山己几>python D:\day2\孪生数.py
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
3和5之间是孪生素数
5和7之间是孪生素数
11和13之间是孪生素数
17和19之间是孪生素数
29和31之间是孪生素数
41和43之间是孪生素数
59和61之间是孪生素数
71和73之间是孪生素数

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

ls = [1,2,3,4,5,6,7,8]
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)




C:\Users\山己几>python D:\day2\给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和.py
列表 [1, 2, 3, 4, 5, 6, 7, 8]
最大值: 8
最小值: 1
和: 36
平均值: 4.5

作业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保存所有注册成功的用户
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
			# 密码长度不能少于3位
			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("请输入用户密码:")

		# 判断用户名和密码是否存在于users
		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("输入有误,请重新选择")







D:\day2>python python完成一个登录注册案例(要求使用容器保存数据).py
欢迎登录我们的用户管理系统
                 1、用户注册
                 2、用户登录
                 3、退出系统
请选择您的操作:1
欢迎进入到用户注册页面
请输入用户名称:username
请输入用户密码:password
请再次确认密码:password
用户注册成功,请登录
欢迎登录我们的用户管理系统
                 1、用户注册
                 2、用户登录
                 3、退出系统
请选择您的操作:3

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

 

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

num = input("请输入要相加的数字:")
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)}")






D:\day2>python "求  a+aa+aaa+.......+aaaaaaaaa=其中a为1至9之中的一个数,项数也要可以指定。.py"
请输入要相加的数字:9
请输入想加的个数:9
1111111101=9+99+999+9999+99999+999999+9999999+99999999+999999999

作业4:合并两个有序数组,合并后还是有序列表

list1 = [1,2,3,4,5,6,7]
list2 = [8,9,10,11,12,13]
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)





D:\day2>python 合并两个有序数组,合并后还是有序列表.py偶数都放在奇数元素之前.py
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

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

​
def sortArray(A:list) -> list:
    reorder = []
    for i in A:
        if i % 2 == 0:
            reorder.append(i)
    for i in A:
        if i % 2 != 0:
            reorder.append(i)
    return reorder
 
print(sortArray([3,1,2,4]))




D:\day2>python 给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前.py
[2, 4, 3, 1]

​

作业6:将10进制数据转换为二进制,并且统计其中的0和1的数量

def duble():
	n=input('请输入终止值:')
	a=[]
	i=1
	while i<=int(n):
		d={}
		b=list(bin(i))
		m=0
		for j in b:
			if j=='1':
				m+=1
		d[i]=m
		a.append(d)
		i+=1
	print(a)
duble()
def duble1():
	n=input('请输入要查询的数:')
	m=0
	for j in list(bin(int(n))):
		if j=='1':
			m+=1
	print(m)
	duble1()
duble1()



D:\day2>python 将10进制数据转换为二进制,并且统计其中的0和1的数量.py元素之前.py
请输入终止值:23
[{1: 1}, {2: 1}, {3: 2}, {4: 1}, {5: 2}, {6: 2}, {7: 3}, {8: 1}, {9: 2}, {10: 2}, {11: 3}, {12: 2}, {13: 3}, {14: 3}, {15: 4}, {16: 1}, {17: 2}, {18: 2}, {19: 3}, {20: 2}, {21: 3}, {22: 3}, {23: 4}]
请输入要查询的数:6
2
请输入要查询的数:6
2
请输入要查询的数:7

作业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}')




D:\day2>python 给定一个数组,已知数组中的元素都是成对出现,.py在奇数元素之前.py可以指定。.py"
只出现一次的数字为3

D:\day2>

作业(选做题):
    某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退),
    问题:共有多少种走法?
    
    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
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值