第三周作业

一.求一个十进制的数值的二进制的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, 84, 48, 82, 92, 81, 32, 68, 97, 72]

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,3,5,7,9,11,12,13,20]

sorted_A = even_odd_sort(A)

print(sorted_A)

十.给定一个包含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, 2, 3, 3, 4, 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

# 从下标0开始,步长为2

    for i in range(0, len(lst), 2):

        total += lst[i]

    return total

# 示例

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 输出偶数下标元素的和

print(sum_even_index_elements(lst))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值