第10天作业

作业1:
    晚上上节课的作业,将用户登录功能扩展
    实现登录后:
        1、发表文章(标题、内容、缩略内容、发表时间、修改时间、作者)
        2、修改自己的文章
        3、查看自己的所有文章
        4、通过标题,查询自己对应的文章
    另外也可以自行扩展(如宠物领养、结婚……)

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

def bubble(arr):
	"""冒泡排序"""
	for i in range(len(arr) - 1):
		for j in range(len(arr) - i - 1):
			if arr[j] > arr[j+1]:
				arr[j], arr[j+1] = arr[j+1], arr[j]
	return arr


ls = [1,23,43,2,3,-10,99,-100,11]
ls = bubble(ls)
print(ls)



C:\Users\山己几\Documents\Tencent Files\843218226\FileRecv>python 排序.py 
[-100, -10, 1, 2, 3, 11, 23, 43, 99]

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

num = input("请输入要相加的数字:")
count = int(input("请输入想加的个数:"))
def wer(num,count):
	a = []
	s = 0
	for i in range(1,count+1):
		a.append(num*i)
		s += int(num*i)
	print(f"{s}={'+'.join(a)}")
wer(num,count)




D:\day2>python "求  a+aa+aaa+.......+aaaaaaaaa=其中a为1至9之中的一个数,项数也要可以指定。.py"
请输入要相加的数字:7
请输入想加的个数:8
86419746=7+77+777+7777+77777+777777+7777777+77777777

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

result = []
def asd(list1,list2):
    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)

list1 = [1,2,3,4,5,6]
list2 = [1,11,111,1111,11111]
asd(list1,list2)

作业5:给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
    推荐使用双指针:
    [0,8, 2, 1, 5, 4]

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



作业6:将10进制数据转换为二进制,并且统计其中的0和1的数量
    2021年小米的面试题

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

作业7:给定一个数组,已知数组中的元素都是成对出现,
    现在数组中只有一个元素没有成对,请找出这个元素。
    [1,3,1,2,2,8,8]

nums = [1,3,1,2,2,8,8]
def asd(nums):
    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}')
nums = [1,3,1,2,2,8,8]
asd(nums)





D:\day2>python 给定一个数组,已知数组中的元素都是成对出现,.py小值,求平均值、求和.py
只出现一次的数字为3

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


    使用动态规划算法

def get_count(board):
 # 求棋盘横向的宽度
 width = len(board[0])
 # 求纵向的高度
 height = len(board)

 if width == 0 and height == 0:
  return 0
 # 棋盘只有一个位置,也就是只有一种走法
 if width == 1 and height == 1:
  return 1

 # 将横向第一行设置为0
 for i in range(width):
  board[0][i] = 1

 for i in range(height):
  board[i][0] = 1

 for i in range(1, height):
  for j in range(1, width):
   board[i][j] = board[i][j - 1] + board[i - 1][j]

 return board[height - 1][width - 1]
 

b = [[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]]
print(get_count(b))




D:\day2>python 棋盘.py
70

作业9:给定一个数组,已知数组中的元素从1到N的自然数(每次加1),
    其中有一个数出现了两次,请找出这个数。
 

def find_repeat(name_list):
    """
    查找列表中重复的数据
    return: 一个重复数据的列表,列表中字典的key 是重复的数据,value 是重复的次数
    """
    # repeat_list = []
    for i in set(name_list):
        repeat = name_list.count(i) # 查找该数据在原列表中的个数
        if repeat > 1:
            j = dict()
            j[i] = repeat
            repeat_list.append(j)
    return repeat_list
repeat_list = []
ls = [1,2,3,4,5,4,7,8,9,10]

find_repeat(ls)
print(repeat_list)





D:\day3>python 给定一个数组,已知数组中的元素从1到N的自然数(每次加1).py
[{4: 2}]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值