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)}')
相关推荐
肥猪猪爸1 分钟前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
色空大师4 分钟前
23种设计模式
java·开发语言·设计模式
Bruce小鬼17 分钟前
QT文件基本操作
开发语言·qt
2202_7544215422 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
我只会发热29 分钟前
Java SE 与 Java EE:基础与进阶的探索之旅
java·开发语言·java-ee
LZXCyrus30 分钟前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
Enougme33 分钟前
Appium常用的使用方法(一)
python·appium
懷淰メ39 分钟前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
宁静@星空1 小时前
006-自定义枚举注解
java·开发语言