1、求一个十进制的数值的二进制的0、1的个数
比如:20 -> 0001 0100 ->两个1、6个0
把二进制变成字符型,每一位都相加的总数就是1的个数
def count_0(n):
b = bin(n) #先将该数转化为二进制
print(b)
a = list(b) #变成列表,转换成字符型
print(a)
#遍历列表,计算个数
zero = 0
one = 0
for i in range(0,len(a)):
if a[i] == "0":
zero +=1
elif a[i] == "1":
one +=1
print(f'该数字二进制0的个数为:{zero}')
print(f'该数字二进制1的个数为:{one}')
num = int(input("请输入一个整数: "))
count_0(num)
python还有内置办法
def count_0number(n) -> int:
return bin(n).count("1") #转换成二进制并输出1的个数
c =count_0number(num)
print(c)
2、实现一个用户管理系统(要求使用容器保存数据) [{name: xxx, pass: xxx, ……},{},{}]
users = []
while True:
print("信息管理系统")
print("-------------------------------------------------")
print(" 1.账号注册")
print(" 2.账号登录")
print(" 3.退出系统")
choice = int(input("请输入您的选择:"))
if choice == 1:
while True:
print('欢迎进入注册界面!')
a = input('请输入您的账户:')
b = input('请输入您的密码:')
if a is None or len(a) == 0:
print('对不起,请重新输入')
continue
flag = False
for d in users:
if d.get('a') == a:
print('对不起,用户名已经存在,请重新输入')
flag = True
break
if flag:
continue
if len(b) < 1:
print('密码长度不能小于1,请重新输入')
continue
user = {"username": a, "password": b}
users.append(user)
print("用户注册成功,请登录")
print(users)
break
elif choice == 2:
print('欢迎登录!')
print("---------------------------------------")
a = input('请输入您的账户:')
b = input("请输入您的密码:")
for user in users:
if user['username'] == a and user.get('password') == b:
print('登陆成功')
break
else:
print('登陆失败,请重新输入')
elif choice == 3:
exit()
else:
print("输入有误。请重新输入!")
3、求1~100之间不能被3整除的数之和
def sum(n:int) -> int:
a = 0
for x in range(1,n+1):
if x%3 == 0:
continue
else:
a = x+a
print(a)
n = int(input("请输入正整数: "))
sum(n)
4、给定一个正整数N,找出1到N(含)之间所有质数的总和
def prime(n:int) -> bool:
#判断是否为质数
for i in range(2,n//2 +1):
if n%i == 0:
return False
return True
n = int(input("请输入一个大于1的正整数: "))
prime_sum = 0
for i in range(2,n):
if prime(n):
prime_sum+= i
print(f"质数和为{prime_sum}")
5、计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)
for x in range(0,10):
pi = 1
for i in range(2,100001+x*100000):
pi +=((-1)**(i-1))*(1/(2*i-1))
print("%s"%(4 * pi))
公式为
当i无限大的时候,越大越接近Π的值
6、给定一个10个元素的列表,请完成排序(注意,不要使用系统api)
#排序的三种方法
arr = [4,25,6,13,-1,33,2,16,17,99,-7]
'''冒泡(算法稳定)'''
def bubble_sort(arr:list) -> None:
"""
会相邻比较两个数据,每一次找到一个最大值或者最小值
"""
for i in range(len(arr) - 1): #外层循环目标:找多少次最大值n-1
for j in range(len(arr)-1-i):
#里层循环,一个一个两两比较完,才能找到最大值,找n-1次,但是找出一个不用再比了,下次可以少比一次
#循环要效率高
if arr[j]>arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
#print(f'排序前: {arr}')
#bubble_sort(arr)
#print(f'排序后: {arr}')
'''选择(算法不稳定)'''
def select_sort(arr:list) -> None:
"""
升序,找最小值
"""
for i in range(len(arr)):
#外层控制找最小值的次数,len次
min_index= i #假设第一个进来的是最小值,计索引;记值就是max_value=arr[i]
for j in range(i+1,len(arr)):
if arr[j] < arr[min_index]:
min_index = j
if min_index != i: #可不加
arr[i],arr[min_index] = arr[min_index],arr[i]
#简化写法----遇到一个小的就换一次,不用最小
def select_sort_j(arr:list) -> None:
for i in range(len(arr)):
#外层控制找最小值的次数,len次
for j in range(i+1,len(arr)):
if arr[j] < arr[i]:
arr[i],arr[j] = arr[j],arr[i]
#效率不是很高,换的次数很多
#select_sort(arr)
#print(arr)
'''插入排序'''
def insert_sort(arr:list) -> None:
"""
将第一个值当作有序序列(本身就有序)
以此插入剩余值,保证序列有序
"""
for i in range(1,len(arr)): #假设第一个值有序
for j in range(i,0,-1): #倒着往前比 (访问不到0) i-1,-1,-1
if arr[j]<arr[j-1]: #前者是新来的,比较最初的那个值 arr[j+1]<arr[j]
arr[j],arr[j-1]=arr[j-1],arr[j]
insert_sort(arr)
print(arr)
7、求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。
num = input('a:') ##输入基本的数,此时s的数据类型是字符串
count_x = int(input('项数: '))
sum = 0 ##让sum=0
for count in range(count_x): ##定义count,count取值从0开始,的意义为让这个基本数进行多少次的
运算,第一次是a,第二次是aa……
result = num * (count+1) ##此时字符串s * (count+1) 是表示将s这个字符串重复count+1次
result1 = int(result) ##将字符串转化为整型
sum = sum + result1 ##逐步求和
print('result = %s '%result)
print('a+aa+aaa+....= %s'%sum)
8、合并两个有序数组,合并后还是有序列表
ls1 = [-5,-1,3,6,9,20,37,99]
ls2 = [-1,1,11,333]
def merge_sort(ls1:list,ls2:list) -> list:
arr =[]
i = j=0
while len(ls1) >= i+1 and len(ls2) >= j+1:
if ls1[i] <= ls2[j]:
arr.append(ls1[i])
i += 1
else:
arr.append(ls2[j])
j +=1
if len(ls1) > i:
arr.append(ls1[i])
if len(ls2) > j:
arr.append(ls2[j])
return arr
print(merge_sort(ls1,ls2))
9、给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前
def sort(a:list):
d = []
b = []
for i in a:
if i %2 == 0:
d.append(i)
else:
b.append(i)
d.extend(b)
print(d)
a = [1,4,7,2,3,9]
sort(a)