python第五,六次作业

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

def count_binary_digits(num):
    binary = bin(num)[2:]
    count_0 = binary.count('0')
    count_1 = binary.count('1')
    return count_0, count_1

num = int(input("请输入一个十进制整数:"))
count_0, count_1 = count_binary_digits(num)
print(f"该数{num}在二进制表示下:")
print(f"0的个数为:{count_0}") 
print(f"1的个数为:{count_1}")

2,实现一个用户管理系统

users = []

def register():
  name = input("请输入用户名:")
  password = input("请输入密码:")
  
  # 将用户名和密码封装到字典中
  user = {"name":name, "password":password}  

  # 将用户字典添加到用户列表
  users.append(user)

  print("注册成功!")

def login():
  name = input("请输入用户名:")
  password = input("请输入密码:")

   for user in users:
    if user["name"] == name and user["password"] == password:
      print("登录成功!")
      return
  
  print("用户名或密码错误!")

def main():
  print("1. 注册") 
  print("2. 登录")

  choice = input("请输入选项:")

  if choice == "1":
    register()
  elif choice == "2":
    login()
  else:
    print("请输入正确选项!")

if __name__ == '__main__':
  main()

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

def sum_numbers_not_divisible_by_3():
    total = 0
    for i in range(1, 101):
        if i % 3 != 0:
            total += i
    return total

result = sum_numbers_not_divisible_by_3()
print("1到100之间不能被3整除的数之和为:", result)

4,给定一个正整数N,找出1到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

def sum_of_primes_up_to_N(N):
    total = 0
    for i in range(2, N + 1):
        if is_prime(i):
            total += i
    return total

N = int(input("请输入一个正整数N: "))
result = sum_of_primes_up_to_N(N)
print(f"1到{N}之间所有质数的总和为: {result}")

5,计算PI

def calculate_pi(num_terms):
    pi = 0
    sign = 1
    denominator = 1
    
    for _ in range(num_terms):
        pi += sign * (1 / denominator)
        sign *= -1
        denominator += 2
        
    return pi * 4

num_terms = 100000  
approx_pi = calculate_pi(num_terms)
print(f"通过计算前{num_terms}项,π的近似值为:{approx_pi}")

6,给定一个10个元素的列表,请完成排序

my_list = []
num_elements = 10 

print("请输入10个整数作为列表元素:")
for _ in range(num_elements):
    element = int(input("请输入一个整数:"))
    my_list.append(element)

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]

bubble_sort(my_list)

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

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

def merge_sorted_arrays(arr1, arr2):
    merged_array = []
    i = 0
    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
            
    merged_array.extend(arr1[i:])
    merged_array.extend(arr2[j:])
    
    return merged_array


arr1 = [1, 3, 5, 7]
arr2 = [2, 4, 6, 8]

merged = merge_sorted_arrays(arr1, arr2)
print(merged)
8,给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
def sort_array_by_parity(nums):
    i, j = 0, len(nums) - 1
    
    while i < j:
        if nums[i] % 2 == 0:
            i += 1
        else:
            nums[i], nums[j] = nums[j], nums[i]
            j -= 1
    
    return nums

A = [3, 1, 2, 4, 6, 5, 7, 8]

result = sort_array_by_parity(A)
print(result)

9,

def find_duplicate(nums):
    slow = nums[0]
    fast = nums[nums[0]]
    
    while slow != fast:
        slow = nums[slow]
        fast = nums[nums[fast]]
    
    fast = 0
    while slow != fast:
        slow = nums[slow]
        fast = nums[fast]
    
    return slow

nums = list(map(int, input("请输入包含重复整数的数组,用空格分隔: ").split()))
duplicate = find_duplicate(nums)
print("重复的整数是:", duplicate)

10,

def find_special_numbers():
    result = []
    for num in range(1, 10001):
        if (num % 5 == 0 and num % 6 != 0) or (num % 6 == 0 and num % 5 != 0):
            result.append(num)
    
    return result

special_numbers = find_special_numbers()
print("10000以内能被5或6整除,但不能被两者同时整除的数:")
print(special_numbers)

11

def sum_even_index_elements(lst):
    sum_even = 0
    for i in range(len(lst)):
        if i % 2 == 0:
            sum_even += lst[i]
    return sum_even
my_list=list(map(int,input("输入列表").split()))
res=sum_even_index_elements(my_list)
print("列表所有偶数下标元素的和为:", res)

 

posted @ 2024-03-28 16:46  青鸢..i  阅读(3)  评论(0编辑  收藏  举报