python 作业4

1.求一个十进制的数值的二进制的0、1的个数

def function_1_0(num):
 
    binary_num = bin(num)
    ls = list(str(binary_num))[2:]
    count_0 = 0
    count_1 = 0
    for i in ls:
        if int(i) == 0:
            count_0 += 1
        else:
            count_1 += 1
    return count_0,count_1
 

num = int(input('请输入一个整数:'))
print(f'将{num}转换为二进制为:{bin(num)[2:]}')
print(f'其中0的数量为:{function_1_0(num)[0]}个')
print(f'其中1的数量为:{function_1_0(num)[1]}个')

在这里插入图片描述

2.实现一个用户管理系统(要求使用容器保存数据)

[{name: xxx, pass: xxx, ……},{},{}]

users = []
 
while True:
    print("\t\t欢迎登录用户管理系统!")
    print("~ * " * 10)
    print("\t\t 1、用户注册")
    print("\t\t 2、用户登录")
    print("\t\t 3、退出系统")
    print("~ * " * 10)

    choice = input("请输入您的选择:")
 
    if choice == "1":
        while True:
            username = input("请输入用户名:")
            password = input("请输入用户密码:")
            password_again = 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
                       
            if password !=  password_again:
                print("输入错误,两次密码不一致!!")
                continue
            
            user = {"username": username, "password": password}
            users.append(user)
            print("用户注册成功,请登录")
            print("\n")
            break
    elif choice == "2":
        print("\n")
        username = input("请输入用户名:")
        password = input("请输入用户密码:")
         
        for user in users:
            if user["username"] == username and user.get("password") == password:
                print(f"尊敬的{username},欢迎回来!")
            else:
                print("对不起,登录失败,请重新登录!")        
    else:
       sys.exit()	

在这里插入图片描述

3.求1~100之间不能被3整除的数之和

sum = 0
for i in range(1,101):
	if i % 3 == 0:
		continue
	else:
		sum = i + sum
print(f"1~100之间不可被三整除的数和为:{sum}")

在这里插入图片描述

4.给定一个正整数N,找出1到N(含)之间所有质数的总和

def is_Prime(x):
	#判断是否为质数
	if x == 1:
		return False
	for i in range(2,x // 2 + 1):
		if x % i == 0:
			return False
	return True


num = int(input("请输入一个正整数:"))
sum_Prime = 0
for i in range(1,num + 1):
	if is_Prime(i):
		sum_Prime += i
print(f"1到num之间所有质数的总和为:{sum_Prime}")

在这里插入图片描述

5.计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1…)

def PI():
    n = 0
    sum_PI = 0
    for i in range(1,10000,2):
        sum_PI += ((-1)**n)*(1/i)
        n += 1
    PI = 4*sum_PI
    return PI
 
 
print(f'PI = {PI()}')

在这里插入图片描述

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

l = eval(input("请输入一个列表:"))
 
ls=list(l)
ls.sort()
s=set(ls)
 
print(s)

在这里插入图片描述

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

def function_sum(a,n):

    sum_a = 0
    for i in range(1,n+1):
        num = int(f'{a}'*i)
        sum_a += num
    return sum_a
 
 
a = int(input("请输入一个区间在[1,9]的正整数:"))
n = int(input("请输入指定的项数:"))
print(f'所求多项式的和为:{function_sum(a,n)}')

在这里插入图片描述

8.合并两个有序数组,合并后还是有序列表

def selection_sort(ls=[]):
    
    for i in range(len(ls)):
        index_min = i
        for j in range(i+1,len(ls)):
            if ls[index_min] > ls[j]:
                index_min = j
        ls[index_min],ls[i] = ls[i],ls[index_min]
    return ls
 

ls_1 = [2,4,5,7,9,12,21]
ls_2 = [2,6,8,10,54]
print(f'原有序列表1为:{ls_1}')
print(f'原有序列表2为:{ls_2}')

ls_1.extend(ls_2)
print(f'合并后的有序列表为:{selection_sort(ls_1)}')

在这里插入图片描述

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

def ls_even_before_odd():
	ls_1 =  [1,2,4,5,7,9,21,54]
	ls_2 = []
	ls_3 = []
	for i in ls_1:
		if i % 2 == 0:
			ls_2.append(i)
		else:
			ls_3.append(i)
	ls_2.extend(ls_3)
	print(f"将该数组中的所有偶数都放在奇数元素之前表示为:{ls_2}")


ls_even_before_odd()

在这里插入图片描述

10.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数

def find_dif_number(ls):
	for i in range(0,len(ls)):
		for num in range(i + 1, len(ls)):
			if ls[i] == ls[num]:
				print(f"{ls[i]}这个数字重复了")
 
 
ls = [1,6,2,5,4,7,5,3]
find_dif_number(ls)

在这里插入图片描述

11.找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)

def find_num():
	for num in range(0,10000):
		if num % 5 == 0 or num % 6 == 0:
			if num % 30 != 0:
				ls.append(num)
	print(ls)
 
 
ls = []
find_num()

在这里插入图片描述

12.写一个方法,计算列表所有偶数下标元素的和(注意返回值)

def count_even():
	count = 0

	for i in range(0,len(ls)):
		if ls[i] % 2 == 0:
			count += i
	print(f"列表中所有偶数下标元素的和为:{count}")
 
 
ls = [5,4,7,21,55,12,8,94]
count_even()

在这里插入图片描述

13.某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退), 问题:共有多少种走法?——(不会)

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 board(arr):
    if arr is None:
        return 0
    if len(arr) == 1 and len(arr[0]) == 1:
        return 1
    for i in range(len(arr[0])):
        arr[0][i] = 1
    for i in range(len(arr)):
        arr[i][0] = 1
    for i in range(1, len(arr)):
        for j in range(1, len(arr[0])):
            arr[i][j] = arr[i - 1][j] + arr[i][j - 1]
    return arr[len(arr) - 1][len(arr[0]) - 1]


ls = [
        [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],
    ]
board(ls)
print(f"该棋盘共有{board(ls)}种走法")

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值