python练习四

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

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}个")


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

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


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

total_sum = 0

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

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


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

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)


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

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


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

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)


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

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)


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

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)


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

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)}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/499701.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python车道线偏离预警

程序示例精选 Python车道线偏离预警 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python车道线偏离预警》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用推…

memcached缓存数据库简介

memcached是一套分布式的高速缓存系统&#xff0c;由LiveJournal的Brad Fitzpatrick开发&#xff0c;但被许多网站使用。这是一套开放源代码软件&#xff0c;以BSD license授权发布。 memcached缺乏认证以及安全管制&#xff0c;这代表应该将memcached服务器放置在防火墙后。 …

自建机房私有云吗?

大家好&#xff0c;我是小码哥&#xff0c;之前一种有没搞清楚公有云、私有云的概念&#xff0c;今天算是弄清楚了&#xff0c;这里给大家分享一下公有云、私有云的区别&#xff0c;以及自建机房算不算私有云&#xff01; 其实私有云&#xff08;Private Cloud&#xff09;和公…

快排(六大排序)

快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列中所…

个人简历主页搭建系列-05:部署至 Github

前面只是本地成功部署网站&#xff0c;网站运行的时候我们可以通过 localhost: port 进行访问。不过其他人是无法访问我们本机部署的网站的。 接下来通过 Github Pages 服务把网站部署上去&#xff0c;这样大家都可以通过特定域名访问我的网站了&#xff01; 创建要部署的仓库…

Spring 源码调试错误修复

Spring 源码调试错误修复 文章目录 Spring 源码调试错误修复1. fatal: not a git repository (or any of the parent directories): .git问题描述解决方案 2. fatal: Needed a single revision问题描述解决方案 1. fatal: not a git repository (or any of the parent director…

14.Java为什么这么火、Java主要特性

文章目录 一、Java为什么这么火&#xff1f;二、Java主要特性 一、Java为什么这么火&#xff1f; 一个语言火不火、能不能长久的生存下去&#xff0c;主要其实是看四个方面 1、用户量&#xff1a;使用的程序员多不多。 不管在国内&#xff0c;还是在国外&#xff0c;使用Jav…

ASCII查询

最近踩的字符坑有点多&#xff0c;自己写了个ASCII查询&#xff0c;不用求人了。 <html> <head> <title>ASCII码查询</title> <style> table { border-collapse:collapse; } th, td { border:1px solid black; padding:10px; text-align:center;…

Java基础之算数运算符的初级用法

运算符 运算符: 对字面量或者变量进行操作的符号 表达式: 用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式 不同运算符连接的表达式体现的是不同类型的表达式 一 .算数运算符 实践一下 加 减 乘 运行结果: 除 取模 运行结果 练习: 数值拆分 需求…

Doris实践——叮咚买菜基于OLAP引擎的应用实践

目录 前言 一、业务需求 二、选型与对比 三、架构体系 四、应用实践 4.1 实时数据分析 4.2 B端业务查询取数 4.3 标签系统 4.4 BI看板 4.5 OLAP多维分析 五、优化经验 六、总结 原文大佬介绍的这篇Doris数仓建设实践有借鉴意义的&#xff0c;这些摘抄下来用作沉淀学…

Makefile用法及变量

一、Makefile概述 自动化编译”&#xff1a;一旦写好&#xff0c;只需要一个make命令&#xff0c;整个工程完全自动编译&#xff0c;极大的提高了软件开发的效率。 提升编译效率&#xff1a;再次编译&#xff0c;只编译修改的文件。 通过检查时间来检查文件是否被修改过 二…

零拷贝技术探讨

零拷贝技术是一种用于提高数据传输效率的网络技术&#xff0c;主要应用于网络服务器中。它通过减少数据在操作系统内核空间和用户空间之间的复制次数来提高性能。 在传统的网络服务器中&#xff0c;当客户端向服务器发送请求时&#xff0c;服务器会从磁盘读取数据&#xff0c;…

3.亿级积分数据分库分表:ShardingSphere官方提供的平滑数据迁移方案介绍,有什么缺点呢?

前面的 2.亿级积分数据分库分表&#xff1a;增量数据同步之代码双写&#xff0c;为什么没用Canal&#xff1f; 博客中介绍了实现平滑数据迁移的两种方案&#xff1a;Canal监听MySQL的binlog、代码双写&#xff0c;也分别介绍了两种方案的实现原理及优缺点&#xff0c;最后基于…

VTK 9.2.6 源码和VTK Examples 编译 Visual Studio 2022

对于编译 VTK 源码和编译详细的说明&#xff1a; VTK 源码编译&#xff1a; 下载源码&#xff1a; 从 VTK 官方网站或者 GitHub 获取源代码。官网目前最近的9.3.0有问题&#xff0c;见VTK 9.3.0 编译问题 Visual Studio 2022去gitlab上选择9.2.6分支进行clone CMake 配置&…

Linux之文件系统

我们之前谈到的文件描述符fd,是与被加载到内存中的文件相关的&#xff0c;那么还有什么文件呢&#xff1f;磁盘文件 内存文件 ------ 断电失效 磁盘文件 ------ 不受断电的影响 磁盘存储器存、取信息的最基本单位是扇区。 —个扇区能存储512Bytes的数据,OS与磁盘交互的单位…

Spring-01

Spring 1.Spring是什么? spring是一个开源的Java应用框架&#xff0c;它提供了一套全面的基础设施支持 2.Spring框架的主要特点 1&#xff09;依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09; 2&#xff09;面向切面编程&#xff08;AOP&#xff09…

Redis命令-Key的层级结构

基础篇Redis 4.4 Redis命令-Key的层级结构 Redis没有类似MySQL中的Table的概念&#xff0c;我们该如何区分不同类型的key呢&#xff1f; 例如&#xff0c;需要存储用户.商品信息到redis&#xff0c;有一个用户id是1&#xff0c;有一个商品id恰好也是1&#xff0c;此时如果使…

长篇分享,如何学习电路设计?

本文来自看海原创视频教程&#xff1a;《运放秘籍》运算放大器基础精讲及应用第一部*开天 微信公众号&#xff1a;工程师看海 【淘宝】https://m.tb.cn/h.5PAjLi7?tkvmMLW43KO7q CZ3457 「运放秘籍_运算放大器Multisim仿真视频教程第一部开天_工程师看海」 点击链接直接打开 …

王道C语言督学营OJ课后习题(课时14)

#include <stdio.h> #include <stdlib.h>typedef char BiElemType; typedef struct BiTNode{BiElemType c;//c 就是书籍上的 datastruct BiTNode *lchild;struct BiTNode *rchild; }BiTNode,*BiTree;//tag 结构体是辅助队列使用的 typedef struct tag{BiTree p;//树…

OpenGL的MVP矩阵理解

OpenGL的MVP矩阵理解 右手坐标系 右手坐标系与左手坐标系都是三维笛卡尔坐标系&#xff0c;他们唯一的不同在于z轴的方向&#xff0c;如下图&#xff0c;左边是左手坐标系&#xff0c;右边是右手坐标系 OpenGL中一般用的是右手坐标系 1.模型坐标系&#xff08;Local Space&…