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')
运行截图