python练习四

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

python 复制代码
def count_binary_ones(n):
    binary_str = bin(n)[2:]  # 转换为二进制字符串,去除前缀'0b'
    print(f"{n} 的二进制为: {binary_str}")
    return binary_str.count('0'), binary_str.count('1')
n = int(input("输入一个数:"))
zeros, ones = count_binary_ones(n)
print(f"这个数的0有: {zeros}个")
print(f"这个数的1有: {ones}个")

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

{name: xxx, pass: xxx, ......},{},{}

python 复制代码
person_list = []


def show_menu():
    print("=================== 用户管理系统V1.0 ===================")
    print("1. 注册用户")
    print("2. 删除用户")
    print("3. 修改用户信息")
    print("4. 查询用户信息")
    print("5. 显示所有用户信息")
    print("6. 退出")


def add_person():
    name = input("请输入的您的姓名:")
    age = input("请输入的您的年龄:")
    sex = input("请输入的您的性别:")

    person_dict = {"name": name, "age": age, "sex": sex}

    person_list.append(person_dict)
    print("注册成功!")
    print("\n")


def show_all_person():
    for index, person_dict in enumerate(person_list):
        person_no = index + 1
        print("编号: %d 姓名: %s 年龄: %s 性别: %s" % (person_no,
                                                       person_dict["name"],
                                                       person_dict["age"],
                                                       person_dict["sex"]))
    print("\n")


def remove_person():
    person_no = int(input("请输入您要删除用户的编号:"))

    index = person_no - 1

    if 0 <= index < len(person_list):

        person_dict = person_list.pop(index)
        print("%s, 删除成功!" % person_dict["name"])
        print("\n")
    else:
        print("请输入合法的编号!")
        print("\n")

def modify_person():
    person_no = int(input("请输入您要修改用户的编号:"))

    index = person_no - 1

    if 0 <= index < len(person_list):

        modify_person_dict = person_list[index]

        modify_person_dict["name"] = input("请输入您修改后的姓名:")
        modify_person_dict["age"] = input("请输入您修改后的年龄:")
        modify_person_dict["sex"] = input("请输入您修改后的性别:")
        print("修改成功!")
        print("\n")
    else:
        print("请输入您的合法编号!")
        print("\n")
def query_person():
    name = input("请输入要查询用户的姓名:")

    for index, person_dict in enumerate(person_list):
        if person_dict["name"] == name:
            person_no = index + 1

            print("编号: %d 姓名: %s 年龄: %s 性别: %s" % (person_no,
                                                           person_dict["name"],
                                                           person_dict["age"],
                                                           person_dict["sex"]))
            print("\n")
            break
    else:

        print("对不起,您查找的用户信息不存在!")
        print("\n")

def start():
    while True:

        show_menu()

        menu_option = input("请输入您要操作的功能选项:")

        if menu_option == "1":
            print("\n")
            add_person()

        elif menu_option == "2":
            print("\n")
            remove_person()
        elif menu_option == "3":
            print("\n")
            modify_person()
        elif menu_option == "4":
            print("\n")
            query_person()
        elif menu_option == "5":
            print("\n")
            show_all_person()
        elif menu_option == "6":
            print("期待您下次使用~")
            break

start()

  1. 求1~100之间不能被3整除的数之和
python 复制代码
total_sum = 0

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

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

  1. 给定一个正整数N,找出1到N(含)之间所有质数的总和
python 复制代码
def is_prime(num):
    if num <= 1:
        return False
    if num <= 3:
        return True
    if num % 2 == 0 or num % 3 == 0:
        return False
    i = 5
    while i * i <= num:
        if num % i == 0 or num % (i + 2) == 0:
            return False
        i += 6
    return True

def sum_of_primes(N):
    total_sum = 0
    for num in range(2, N + 1):
        if is_prime(num):
            total_sum += num
    return total_sum

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

  1. 计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)
python 复制代码
pi = 1
f = -1
i = 3
while 1 / i > 1e-6:
    pi = pi + 1 / i * f
    i = i + 2
    f = -f
print("pi=%.6f" % (pi * 4)) 

  1. 给定一个10个元素的列表,请完成排序(注意,不要使用系统api)
python 复制代码
def get_one(arr):
    n = len(arr)
    for i in range(n):
        min_index = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]

# 示例列表
my_list = [9,5,7,6,3,4,8,15,11]

print("原始列表:", my_list)
get_one(my_list)
print("排序后的列表:", my_list)

  1. 求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。
python 复制代码
a = int(input("输入1~9之间的一个数:"))

def get_aa(n):
    sum_result = 0
    temp_a = a  # 保存初始输入的值
    for i in range(6):
        sum_result += temp_a
        temp_a = temp_a * 10 + 2
    return sum_result
sum_result = get_aa(a)
print("sum=", sum_result)

  1. 合并两个有序数组,合并后还是有序列表
python 复制代码
def get_two(arr1, arr2):
    merged_array = []
    i = j = 0

    while i < len(arr1) and j < len(arr2):
        if arr1[i] < arr2[j]:
            merged_array.append(arr1[i])
            i += 1
        else:
            merged_array.append(arr2[j])
            j += 1

    while i < len(arr1):
        merged_array.append(arr1[i])
        i += 1

    while j < len(arr2):
        merged_array.append(arr2[j])
        j += 1

    return merged_array

# 示例数组
arr1 = [1, 3, 5, 7, 9]
arr2 = [2, 4, 6, 8, 10]

merged = get_two(arr1, arr2)
print("arr1:",arr1)
print("arr2:",arr2)
print("合并后的有序列表:", merged)

  1. 给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
python 复制代码
def before(ls=[]):
    '''
    将一个非负整数数组中的所有偶数都放在奇数元素之前
    '''
    for i in range(len(ls)):
        if ls[i] % 2 != 0:
            for j in range(i + 1, len(ls)):
                if ls[j] % 2 == 0:
                    ls[i], ls[j] = ls[j], ls[i]
                    break
    return ls


ls = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(f'原列表为:{ls}')
print(f'将偶数置于奇数前,列表变为:{before(ls)}')
相关推荐
上单带刀不带妹10 分钟前
手写 Vue 中虚拟 DOM 到真实 DOM 的完整过程
开发语言·前端·javascript·vue.js·前端框架
im_AMBER31 分钟前
学习日志05 python
python·学习
大虫小呓36 分钟前
Python 处理 Excel 数据 pandas 和 openpyxl 哪家强?
python·pandas
哪 吒1 小时前
2025B卷 - 华为OD机试七日集训第5期 - 按算法分类,由易到难,循序渐进,玩转OD(Python/JS/C/C++)
python·算法·华为od·华为od机试·2025b卷
-凌凌漆-1 小时前
【Qt】QStringLiteral 介绍
开发语言·qt
程序员爱钓鱼1 小时前
Go语言项目工程化 — 常见开发工具与 CI/CD 支持
开发语言·后端·golang·gin
军训猫猫头1 小时前
1.如何对多个控件进行高效的绑定 C#例子 WPF例子
开发语言·算法·c#·.net
真的想上岸啊2 小时前
学习C++、QT---18(C++ 记事本项目的stylesheet)
开发语言·c++·学习
明天好,会的2 小时前
跨平台ZeroMQ:在Rust中使用zmq库的完整指南
开发语言·后端·rust
摸爬滚打李上进2 小时前
重生学AI第十六集:线性层nn.Linear
人工智能·pytorch·python·神经网络·机器学习