文章目录
- 1.求一个十进制的数值的二进制的0、1的个数
- 2.实现一个用户管理系统(要求使用容器保存数据)
- 3.求1~100之间不能被3整除的数之和
- 4.给定一个正整数N,找出1到N(含)之间所有质数的总和
- 5.计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)
- 6.给定一个10个元素的列表,请完成排序(注意,不要使用系统api)
- 7.求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。
- 8.合并两个有序数组,合并后还是有序列表
- 9.给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
- 10.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
- 11.找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
- 12.写一个方法,计算列表所有偶数下标元素的和(注意返回值)
- 13.某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退), 问题:共有多少种走法?——(不会)
1.求一个十进制的数值的二进制的0、1的个数
def function_1_0(num):
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的数量为:{function_1_0(num)[0]}个')
print(f'其中1的数量为:{function_1_0(num)[1]}个')
2.实现一个用户管理系统(要求使用容器保存数据)
[{name: xxx, pass: xxx, ……},{},{}]
users = []
while True:
print("\t\t欢迎登录用户管理系统!")
print("~ * " * 10)
print("\t\t 1、用户注册")
print("\t\t 2、用户登录")
print("\t\t 3、退出系统")
print("~ * " * 10)
choice = input("请输入您的选择:")
if choice == "1":
while True:
username = input("请输入用户名:")
password = input("请输入用户密码:")
password_again = input("请确认密码:")
if username == None or len(username) == 0:
print("对不起,用户不能为空!!!")
continue
flag = False
for u in users:
if u.get("username") == username:
print("对不起,该用户已经存在,请重新注册!")
flag = True
break
if flag:
continue
if password != password_again:
print("输入错误,两次密码不一致!!")
continue
user = {"username": username, "password": password}
users.append(user)
print("用户注册成功,请登录")
print("\n")
break
elif choice == "2":
print("\n")
username = input("请输入用户名:")
password = input("请输入用户密码:")
for user in users:
if user["username"] == username and user.get("password") == password:
print(f"尊敬的{username},欢迎回来!")
else:
print("对不起,登录失败,请重新登录!")
else:
sys.exit()
3.求1~100之间不能被3整除的数之和
sum = 0
for i in range(1,101):
if i % 3 == 0:
continue
else:
sum = i + sum
print(f"1~100之间不可被三整除的数和为:{sum}")
4.给定一个正整数N,找出1到N(含)之间所有质数的总和
def is_Prime(x):
#判断是否为质数
if x == 1:
return False
for i in range(2,x // 2 + 1):
if x % i == 0:
return False
return True
num = int(input("请输入一个正整数:"))
sum_Prime = 0
for i in range(1,num + 1):
if is_Prime(i):
sum_Prime += i
print(f"1到num之间所有质数的总和为:{sum_Prime}")
5.计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1…)
def PI():
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)
l = eval(input("请输入一个列表:"))
ls=list(l)
ls.sort()
s=set(ls)
print(s)
7.求 a+aa+aaa+…+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。
def function_sum(a,n):
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'所求多项式的和为:{function_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 = [2,4,5,7,9,12,21]
ls_2 = [2,6,8,10,54]
print(f'原有序列表1为:{ls_1}')
print(f'原有序列表2为:{ls_2}')
ls_1.extend(ls_2)
print(f'合并后的有序列表为:{selection_sort(ls_1)}')
9.给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
def ls_even_before_odd():
ls_1 = [1,2,4,5,7,9,21,54]
ls_2 = []
ls_3 = []
for i in ls_1:
if i % 2 == 0:
ls_2.append(i)
else:
ls_3.append(i)
ls_2.extend(ls_3)
print(f"将该数组中的所有偶数都放在奇数元素之前表示为:{ls_2}")
ls_even_before_odd()
10.给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数
def find_dif_number(ls):
for i in range(0,len(ls)):
for num in range(i + 1, len(ls)):
if ls[i] == ls[num]:
print(f"{ls[i]}这个数字重复了")
ls = [1,6,2,5,4,7,5,3]
find_dif_number(ls)
11.找出10000以内能被5或6整除,但不能被两者同时整除的数(函数)
def find_num():
for num in range(0,10000):
if num % 5 == 0 or num % 6 == 0:
if num % 30 != 0:
ls.append(num)
print(ls)
ls = []
find_num()
12.写一个方法,计算列表所有偶数下标元素的和(注意返回值)
def count_even():
count = 0
for i in range(0,len(ls)):
if ls[i] % 2 == 0:
count += i
print(f"列表中所有偶数下标元素的和为:{count}")
ls = [5,4,7,21,55,12,8,94]
count_even()
13.某个人进入如下一个棋盘中,要求从左上角开始走,最后从右下角出来(要求只能前进,不能后退), 问题:共有多少种走法?——(不会)
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
def board(arr):
if arr is None:
return 0
if len(arr) == 1 and len(arr[0]) == 1:
return 1
for i in range(len(arr[0])):
arr[0][i] = 1
for i in range(len(arr)):
arr[i][0] = 1
for i in range(1, len(arr)):
for j in range(1, len(arr[0])):
arr[i][j] = arr[i - 1][j] + arr[i][j - 1]
return arr[len(arr) - 1][len(arr[0]) - 1]
ls = [
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
]
board(ls)
print(f"该棋盘共有{board(ls)}种走法")