ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python第五天

2022-01-16 19:30:26  阅读:147  来源: 互联网

标签:username 10 python num ls print 第五天 def


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

 

标签:username,10,python,num,ls,print,第五天,def
来源: https://blog.csdn.net/qq_57775566/article/details/122509033

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有