python实例(3)

day5

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

def count_binary_zeros_ones(n):
    binary_str = bin(n)
    zeros = binary_str.count('0')
    ones = binary_str.count('1')
    return zeros, ones

# 示例
n=int(input("请输入数字:"))
zeros, ones = count_binary_zeros_ones(n)
print(f"0的数量: {zeros}, 1的数量: {ones}")

运行截图

 

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

class User:
    def __init__(self, name, password):
        self.name = name
        self.password = password

    def __str__(self):
        return f"User(name={self.name!r}, pass={self.password!r})"

class UserManager:
    def __init__(self):
        self.users = []

    def add_user(self, user):
        self.users.append(user)

    def find_user(self, name):
        for user in self.users:
            if user.name == name:
                return user
        return None

    def list_users(self):
        for user in self.users:
            print(user)

# 示例使用
um = UserManager()

# 添加用户
um.add_user(User("Alice", "alice123"))
um.add_user(User("Bob", "bob456"))

# 列出所有用户
um.list_users()

# 查找特定用户
found_user = um.find_user("Alice")
if found_user:
    print(f"Found user: {found_user}")
else:
    print("User not found.")

运行截图

 

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

def sum_not_divisible_by_3(n=100):
    return sum(i for i in range(1, n+1) if i % 3 != 0)

# 示例
print(sum_not_divisible_by_3())

运行截图

 

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

def sum_primes(n):
    def is_prime(num):
        if num < 2: return False
        for i in range(2, int(num**0.5) + 1):
            if num % i == 0: return False
        return True
    return sum(i for i in range(2, n+1) if is_prime(i))

# 示例
N=int(input("请输入数字:"))
print(sum_primes(N))

 运行截图

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

def compute_pi(precision=1000):
    pi = 0.0
    for i in range(precision):
        if i % 2 == 0:
            pi -= 1 / (2 * i + 1)
        else:
            pi += 1 / (2 * i + 1)
    return 4 * pi

# 示例
print(compute_pi())

运行截图

 

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

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

# 示例
lst = [64, 34, 25, 12, 22, 11, 90, 88, 7, 1]
sorted_lst = bubble_sort(lst)
print(sorted_lst)

运行截图

 

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

def sum_aaa(a, n):
    result = 0
    for i in range(n):
        result = result * 10 + a
    return result

# 示例
a=int(input("请输入:"))
n=int(input("请输入:"))
print(sum_aaa(a, n))

运行截图

 

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

def merge_sorted_arrays(arr1, arr2):
    merged = arr1 + arr2
    merged.sort()
    return merged

# 示例
arr1 = [1, 3, 5, 7]
arr2 = [2, 4, 6, 8]
merged = merge_sorted_arrays(arr1, arr2)
print(merged)

运行截图

 

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

def even_odd_sort(arr):
    even = [x for x in arr if x % 2 == 0]
    odd = [x for x in arr if x % 2 != 0]
    return even + odd

# 示例
A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sorted_A = even_odd_sort(A)
print(sorted_A)

运行截图

day6

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

def find_duplicate(nums):
    # 计算预期的和
    expected_sum = (len(nums) * (len(nums) + 1)) // 2
    # 计算实际的和
    actual_sum = sum(nums)
    # 找到重复的整数
    duplicate = expected_sum - actual_sum
    return duplicate

# 示例
nums = [1, 3, 5, 2, 4, 5]  # 假设数字5是重复的
print(find_duplicate(nums))  # 输出重复的整数

运行截图

 

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

def find_special_numbers(upper_limit):
    special_numbers = []
    for i in range(1, upper_limit):
        if (i % 5 == 0 or i % 6 == 0) and not (i % 5 == 0 and i % 6 == 0):
            special_numbers.append(i)
    return special_numbers

# 示例
upper_limit =int(input("请输入数字:"))
print(find_special_numbers(upper_limit))

运行截图

 

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

 

def sum_even_index_elements(lst):
    total = 0
    for i in range(0, len(lst), 2):  # 从下标0开始,步长为2
        total += lst[i]
    return total

# 示例
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(sum_even_index_elements(lst))  # 输出偶数下标元素的和

运行截图

选做

汉诺塔游戏,给三个柱子分别为A,B,C,其中一个柱子上从下到上有n个由大到小排列的圆盘,利用汉诺塔游戏规则给出这n个圆盘在柱子上的移动轨迹

def hanoi_tower(n, source, target, auxiliary):
    """
    打印汉诺塔问题的解决方案。
    n: 圆盘的数量
    source: 初始柱子
    target: 目标柱子
    auxiliary: 辅助柱子
    """
    if n > 0:
        # 将 n-1 个圆盘从 source 移动到 auxiliary,使用 target 作为辅助
        hanoi_tower(n-1, source, auxiliary, target)
        
        # 将第 n 个圆盘(最大的)从 source 移动到 target
        print(f"Move disk {n} from {source} to {target}")
        
        # 将 n-1 个圆盘从 auxiliary 移动到 target,使用 source 作为辅助
        hanoi_tower(n-1, auxiliary, target, source)

# 测试函数
n=int(input("请输入数字:"))
hanoi_tower(n, 'A', 'C', 'B')

 运行截图

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值