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第五天的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Python编程基础
- 2024-11-01Python 基础教程
- 2024-11-01用Python探索可解与不可解方程的问题
- 2024-11-01Python编程入门指南
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南