python第五天

2022/1/16 20:04:44

本文主要是介绍python第五天,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

作业1:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
        [10, 8, 5, 3, 27, 99]

ls = [10, 8, 5, 3, 27, 99]
def mora():
	num1 = 0
	for i in ls:
		if i % 2 ==0:
			num1 += i/2
		else:
			num1 += (i/2 + 1/2)
	print(num1)
 
 
 
mora()

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

 

def is_prime(num):            #判断质数
	for i in range(2, num // 2 + 1):
		if num % i == 0:
			return False
	return True


def twin_prime(num):
	primes = []
	for i in range(2, num + 1):
		if is_prime(i):
			primes.append(i)        
	index = 1                    	# 判断是否是孪生素数
	while index < len(primes):
		if primes[index] - primes[index - 1] == 2:
			print(f"{primes[index - 1]}和{primes[index]}这两个素数是孪生素数")
		index += 1
		

twin_prime(100)

作业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]
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中的重复数据去重,至少使用两种方案

ls = [10,2,3,2,3,32,4,5,74,32,8,7,10,6,10,5,4,11]
def move_duplicate1(arr):
	# 使用系统API
	new_ls = list(set(arr))
	return new_ls


new_ls = move_duplicate1(ls)
print(new_ls)
def move_duplicate2(arr):
	"""自己实现了去重方案"""
	new_arr = []
	for i in arr:
		if i not in new_arr:
			new_arr.append(i)
	return new_arr


new_ls = move_duplicate2(ls)
print(new_ls)

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

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

import sys
import getpass
# 保存所有用户
users = []
def main_menu():
	print("~ * ~" * 10)
	print("\t\t\t 1、用户注册")
	print("\t\t\t 2、用户登录")
	print("\t\t\t 3、退出系统")
	return input("请输入您的操作:")


def user_exists(username):
	for user in users:
		# {"username": "ljh",  "password": "1234"}
		if user.get("username") == username:
			return user
	return None


def reg():
	while True:
		username = input("请输入用户名称:")
		password = getpass.getpass("请输入用户密码:")
		confirm_pwd = getpass.getpass("请再次输入密码:")

		# 数据校验
		if username == None or username == "":
			print("对不起,用户名不能为空!!")
			continue
		if len(password) < 3:
			print("对不起,密码不能少于3位!!")
			continue
		if password != confirm_pwd:
			print("对不起,两次密码不一致,请重新输入!!")
			continue

		# 用户名称是否重复
		if user_exists(username) != None:
			print("对不起,该用户名称已经存在,请重新注册!!")
			continue

		# 保存用户
		user = {"username": username, "password": password}
		users.append(user)
		chioce = input("输入N/n则退出到上一个界面,否则继续注册")
		if choice == "N" or chioce == "n":
			main_menu()


def login():
	while True:
		username = input("请输入用户名称:")
		password = getpass.getpass("请输入用户密码:")
		user = user_exists(username)
		if user is not None:
			if user.get("password") == password:
				print("登录成功!!")
				print("欢迎到您的个人中心页面!!")
			else:
				print("对不起,密码错误")
		else:
			print("对不起,没有这个用户")


if __name__ == '__main__':
	while True:
		print(users)
		choice = main_menu()
		if choice == "1":
			# 注册
			reg()
		elif choice == "2":
			# 登录
			login()
		elif choice == "3":
			sys.exit()

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

 

作业12:求  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)}")

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

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)
 
 

作业14:给定一个非负整数数组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([0,8,2,1,5,4]))
 
 
 

 

作业15:将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()
 

作业16:给定一个数组,已知数组中的元素都是成对出现,
    现在数组中只有一个元素没有成对,请找出这个元素。
    [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}')
 

 



这篇关于python第五天的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程