python第三次作业

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

def count_0_1_in_binary(decimal_num):
    binary_str = bin(decimal_num)[2:]
    
    count_0 = binary_str.count('0')
    count_1 = binary_str.count('1')
    
    return count_0, count_1

decimal_number = int(input("十进制数:"))
zero_count, one_count = count_0_1_in_binary(decimal_number)
print(f"十进制数 {decimal_number} 的二进制表示中有 {zero_count} 个0 和 {one_count} 个1。")

2、实现一个用户管理系统(要求使用容器保存数据) [{name: xxx, pass: xxx, ……},{},{}]

def menu():
    #创建菜单
    print("*" * 50)
    print(" " * 20 + "欢迎使用用户管理系统!")
    print(" " * 22 + "1:添加用户信息")
    print(" " * 22 + "2:删除用户信息")
    print(" " * 22 + "3:修改用户信息")
    print(" " * 22 + "4:查询用户信息")
    print(" " * 22 + "5:退出系统")
    print("*" * 50)


def user_find(name):
    # 创建user_find函数用于查询用户信息
    for i in user_list:
        nick_name = i.get("姓名")
        if nick_name == name:
            return i
    return -1


def user_input():
    # 创建user_input函数用于添加用户信息
    # 创建一个字典存放信息
    user_dict = {}
    # 接收输入的信息
    name = input("请输入你要添加的用户姓名:")
    age = input("请输入你要添加的用户年龄:")
    sex = input("请输入你要添加的用户性别:")
    address = input("请输入你要添加的用户住址:")
    # 将接收到的信息传入字典
    user_dict["姓名"] = name
    user_dict["年龄"] = age
    user_dict["性别"] = sex
    user_dict["住址"] = address
    # 将字典中的用户信息传入列表
    user_list.append(user_dict)
    print("添加成功")
    # 输出列表
    print(user_list)


def user_delete():
    # 创建user_delete函数用于删除用户信息
    # 输入你要删除的用户姓名
    name = input("请输入你要删除的用户姓名:")
    # 调用查询函数
    i = user_find(name)
    if i != -1:
        # 在列表中删除该信息
        user_list.remove(i)
        print("当前用户列表为", user_list)
    else:
        print("用户未找到!")


def user_change():
    # 创建user_change函数用户修改用户信息
    # 输入你要删除的用户姓名
    name = input("请输入你要删除的用户姓名:")
    # 调用查询函数
    i = user_find(name)
    if i != -1:
        user_list_key = input("请输入你要修改的属性:")
        if user_list_key in ["姓名", "年龄", "性别", "住址"]:
            new_change = input("请输入新的值:")
            i[user_list_key] = new_change
            print("当前用户列表为", user_list)
        else:
            print("请输入正确的属性!")
    else:
        print("用户未找到!")


def user_print(i):
    # 创建user_print函数用户打印用户信息
    # 调用查询函数
    i = user_find(user_name)
    if i != -1:
        print("用户查询成功!")
        print("姓名:".format(i.get("姓名")))
        print("年龄:".format(i.get("年龄")))
        print("性别:".format(i.get("性别")))
        print("住址:".format(i.get("住址")))
    else:
        print("用户未找到!")


user_list = []
while True:
    menu()
    num = int(input("请输入你所需要做的操作:(1.增加信息  2.删除信息  3.修改信息  4.查询信息  5.退出系统)"))
    if num == 1:
        user_input()
    elif num == 2:
        user_delete()
    elif num == 3:
        user_change()
    elif num == 4:
        user_name = input("请输入你要查找的用户姓名:")
        user_print(user_name)
    else:
        print("感谢使用!祝你生活愉快!")
        break
else:
    print("请输入正确的序号:")

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

n = 0
for i in range(1, 101):
    if i % 3 != 0:  
        n += i   

print("1到100之间不能被3整除的数之和为:", n)

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

import math
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

def sum_of_primes_up_to_N(N):
    return sum(num for num in range(1, N + 1) if is_prime(num))

N = int(input("请输入一个正整数 N:"))
sum_of_primes = sum_of_primes_up_to_N(N)
print("1到", N, "之间所有质数的总和为:", sum_of_primes)

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

def sums():
    x=0
    y=0
    for i in range(1,99999999,4):
        x+=4*(1/i)
    for i in range (3,99999999,4):
        y-=4*(1/i)
    print(x+y)
sums()

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

def bubble_sort(arr):
    n = len(arr)
    for i in range(n - 1):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

my_list = [10, 45, 2, 96, 36, 7, 100, 25, 54, 1 ]
print("排序前的列表:", my_list)
bubble_sort(my_list)
print("排序后的列表:", my_list)

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

def sums():
    a=int(input("请输入数字:"))
    b=int(input("请输入项数:"))
    c=0
    for i in range(1,b+1):
        sums=a**i
        c+=sums
    print("您输入的项为%s"%(b)+",数字为:%s"%(a)+",和为:%s"%(c))
sums()

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

def merge_sorted_arrays(arr1, arr2):
    merged_arr = []
    i = 0
    j = 0
    
    while i < len(arr1) and j < len(arr2):
        if arr1[i] < arr2[j]:
            merged_arr.append(arr1[i])
            i += 1
        else:
            merged_arr.append(arr2[j])
            j += 1
    
    merged_arr.extend(arr1[i:])
    merged_arr.extend(arr2[j:])
    
    return merged_arr
 
arr1 = list(map(int , input("请依次输入有序列表1(使用空格隔开):").split(" ")))
arr2 = list(map(int , input("请依次输入有序列表2(使用空格隔开):").split(" ")))
 
print(f"未合并的列表:{arr1},{arr2}")
merged = merge_sorted_arrays(arr1, arr2)
print(f"合并后的列表{merged}")

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

def ls():
    lsA=[1, 22, 45, 84, 78, 21]
    lsB=[]
    lsC=[]
    for i in lsA:
        if i%2==0:
            lsB.append(i)
        else:
            lsC.append(i)
    lsB.extend(lsC)
    print("该数组中的所有偶数都放在奇数元素之前的元素为:%s"%(lsB))
ls()

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

def findDuplicate(nums):
    slow = fast = nums[0]
    while True:
        slow = nums[slow]
        fast = nums[nums[fast]]
        if slow == fast:
            break
    
    slow = nums[0]
    while slow != fast:
        slow = nums[slow]
        fast = nums[fast]
    
    return slow

nums = [1, 3, 4,  2, 5, 4, 6]
print(findDuplicate(nums))

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

def func():
    for i in range(10001):
        if (i % 5 == 0 or i % 6 == 0) and i % 30 != 0:
            print(i,end = " ")

func()    

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

def sumEvenIndex(nums):
    total = 0
    for i in range(0, len(nums), 2):
        total += nums[i]
    return total

nums = [1, 2, 3, 4, 5, 6, 8, 12]
result = sumEvenIndex(nums)
print(result)

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

14、【选做】汉诺塔:

def hanoi(n, a, b, c):
    if n > 0:
        hanoi(n-1, a, c, b)  # 将n-1个盘子从a移动到b
        print(f"把盘子从 {a} 移动 {c}")  # 移动第n个盘子从a到c
        #print(f"Move disk from {a} to {c}")
        hanoi(n-1, b, a, c)  # 再将n-1个盘子从b移动到c

n = int(input("盘子的数量: "))
#n = int(input("Enter the number of disks: "))
hanoi(n, 'A', 'B', 'C')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值