1、求一个十进制的数值的二进制的0、1的个数
代码块
def ten_to_two(num):
'''
将十进制数据转换为二进制,并且统计其中的0和1的数量
'''
binary_num = bin(num)
ls = list(str(binary_num))[2:]
count_0 = 0
count_1 = 0
for i in ls:
if int(i) == 0:
count_0 += 1
else:
count_1 += 1
return count_0, count_1
num = int(input('请输入一个整数:'))
print(f'将{num}转换为二进制为:{bin(num)[2:]}')
print(f'其中0的数量为:{ten_to_two(num)[0]}个')
print(f'其中1的数量为:{ten_to_two(num)[1]}个')
运行结果:
2、用户管理
代码块
person_list = []
def show_menu():
print("=================== 用户管理系统V1.0 ===================")
print("1. 注册用户")
print("2. 删除用户")
print("3. 修改用户信息")
print("4. 查询用户信息")
print("5. 显示所有用户信息")
print("6. 退出")
def add_person():
name = input("请输入的您的姓名:")
age = input("请输入的您的年龄:")
sex = input("请输入的您的性别:")
person_dict = {"name":name, "age": age, "sex": sex}
person_list.append(person_dict)
print("注册成功!")
print("\n")
def show_all_person():
for index, person_dict in enumerate(person_list):
person_no = index + 1
print("编号: %d 姓名: %s 年龄: %s 性别: %s" % (person_no,
person_dict["name"],
person_dict["age"],
person_dict["sex"]))
print("\n")
def remove_person():
person_no = int(input("请输入您要删除用户的编号:"))
index = person_no - 1
if 0 <= index < len(person_list):
person_dict = person_list.pop(index)
print("%s, 删除成功!" % person_dict["name"])
print("\n")
else:
print("请输入合法的编号!")
print("\n")
def modify_person():
person_no = int(input("请输入您要修改用户的编号:"))
index = person_no - 1
if 0 <= index < len(person_list):
modify_person_dict = person_list[index]
modify_person_dict["name"] = input("请输入您修改后的姓名:")
modify_person_dict["age"] = input("请输入您修改后的年龄:")
modify_person_dict["sex"] = input("请输入您修改后的性别:")
print("修改成功!")
print("\n")
else:
print("请输入您的合法编号!")
print("\n")
def query_person():
name = input("请输入要查询用户的姓名:")
for index, person_dict in enumerate(person_list):
if person_dict["name"] == name:
person_no = index + 1
print("编号: %d 姓名: %s 年龄: %s 性别: %s" % (person_no,
person_dict["name"],
person_dict["age"],
person_dict["sex"]))
print("\n")
break
else:
print("对不起,您查找的用户信息不存在!")
print("\n")
def start():
while True:
show_menu()
menu_option = input("请输入您要操作的功能选项:")
if menu_option == "1":
print("\n")
add_person()
elif menu_option == "2":
print("\n")
remove_person()
elif menu_option == "3":
print("\n")
modify_person()
elif menu_option == "4":
print("\n")
query_person()
elif menu_option == "5":
print("\n")
show_all_person()
elif menu_option == "6":
print("期待您下次使用~")
break
start()
运行结果:
3、求1~100之间不能被3整除的数之和
def func(num):
'''
求不能被3整除的数
'''
if num % 3 == 0:
return False
else:
return True
sum_x = 0
for x in range(1,101):
if func(x):
sum_x += x
print(f'1~100之间不能被3整除的数之和为:{sum_x}')
4、给定一个正整数N,找出1到N(含)之间所有质数的总和
def isPrime(x):
"""
判断是否为质数
"""
if x == 1:
return False
for i in range(2,x//2 + 1):
if x % i == 0:
return False
return True
N = int(input('请输入一个正整数N:'))
sum_Prime = 0
for x in range(1,N+1):
if isPrime(x):
sum_Prime += x
print(f'1到N(含)之间所有质数的总和为:{sum_Prime}')
5、计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)
def PI():
'''
计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-.......)
'''
n = 0
sum_PI = 0
for i in range(1,10000,2):
sum_PI += ((-1)**n)*(1/i)
n += 1
PI = 4*sum_PI
return PI
print(f'PI = {PI()}')
6、给定一个10个元素的列表,请完成排序(注意,不要使用系统api)
def selection_sort(ls=[]):
'''
选择排序法
'''
for i in range(len(ls)):
index_min = i
for j in range(i+1,len(ls)):
if ls[index_min] > ls[j]:
index_min = j
ls[index_min],ls[i] = ls[i],ls[index_min]
return ls
ls = [23,5,12,67,64,87,3,1,2,28]
print(f'原列表为:{ls}')
print(f'选择排序法排序后的列表为:{selection_sort(ls)}')
7、求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。
def one_sum(a,n):
'''
求 a + aa + aaa +.......+ aaaaaaaaa = ? (其中a为1至9之中的一个数,项数可以指定)
'''
sum_a = 0
for i in range(1,n+1):
num = int(f'{a}'*i)
sum_a += num
return sum_a
a = int(input('请输入一个在区间[1,9]的正整数:'))
n = int(input('请输入指定的项数:'))
print(f'所求多项式的和为:{one_sum(a,n)}')
8、合并两个有序数组,合并后还是有序列表
def selection_sort(ls=[]):
'''
选择排序法
'''
for i in range(len(ls)):
index_min = i
for j in range(i+1,len(ls)):
if ls[index_min] > ls[j]:
index_min = j
ls[index_min],ls[i] = ls[i],ls[index_min]
return ls
ls_1 = [1,3,5,7,9]
ls_2 = [2,4,6,8,10]
print(f'原有序列表1为:{ls_1}')
print(f'原有序列表2为:{ls_2}')
ls_1.extend(ls_2)
print(f'合并后的有序列表为:{selection_sort(ls_1)}')
9、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
def before(ls=[]):
'''
将一个非负整数数组中的所有偶数都放在奇数元素之前
'''
for i in range(len(ls)):
if ls[i] % 2 != 0:
for j in range(i + 1, len(ls)):
if ls[j] % 2 == 0:
ls[i], ls[j] = ls[j], ls[i]
break
return ls
ls = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(f'原列表为:{ls}')
print(f'将偶数置于奇数前,列表变为:{before(ls)}')
10、给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n), 可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
def get_num_duplicate(nums):
temp = 0
for i in range(0, len(nums)):
temp ^= i ^ nums[i]
return temp
if __name__ == '__main__':
nums = [1,2,8,3,4,5,6,7,7]
d = get_num_duplicate(nums)
print(f"数组中重复的是{d}")
11、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def math():
ls = []
for i in range(0,10001):
flag = False
if (i% 5 == 0 or i % 6 == 0) and i % 30 != 0:
flag = True
if flag:
ls.append(i)
print(ls)
math()
12、写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def sum_even(ls):
'''
计算列表所有偶数下标元素的和
'''
sum_even = 0
for i in range(0, len(ls), 2):
sum_even += ls[i]
return sum_even
if __name__ == '__main__':
ls = [24,3602,3601,12138,99]
print(f'{ls}中所有偶数下标元素的和为:{sum_even(ls)}')