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