python练习题

1.有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

for i in range(99,9999):
    a = i // 100 - i // 1000 * 10
    b = i // 10 - i // 100 *10
    if a == 3 and b == 6 and i % 3 == 0 and i % 2 == 0:
        print(i)
        
E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
360	     366	1362	1368	2364	3360	3366	
4362	4368	5364	6360	6366	7362	7368	
8364	9360	9366

2.编程求一个四位自然数ABCD,它乘以A后变成DCBA

a = input("请输入一个四位数:")
while a.isdigit():
    b = int(a)
    break
else:
    a = input("请输入一个四位数:")
    a.isdigit()

a4 = b // 1000
a3 = b // 100 - b // 1000 * 10
a2 = b // 10 -  b // 100 * 10
a1 = b - b // 10 * 10
print(str(a1)+str(a2)+str(a3)+str(a4))

E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
请输入一个四位数:5656
6565

3.如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

ls = []
#外层循环用于迭代0-100的数字,1不做判断
for num in range(2,101):
	#定义一个布尔值,flag为真代表是素数
	flag = True
	#内层循环用于判断
	for i in range(2,num):
		if num%i == 0:
			#被整除了,所以不是质数,将flag设置为Flase
			flag = False
			#判断出来后,不需要再循环了,所以直接跳出即可
			break
	if flag:
		ls.append(num)
	else:
		pass
print("1~100以内的素数有:")
print(ls)

i = 1
while i < len(ls):
	if ls[i] - ls[i - 1] == 2:
		print("{}和{}是孪生数".format(ls[i], ls[i - 1]),end="\t\t")
		if i == 6 or i == 10:
			print(" ")
	i += 1


E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
1~100以内的素数有:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
53是孪生数		75是孪生数		1311是孪生数		1917是孪生数		3129是孪生数		 
4341是孪生数		6159是孪生数		7371是孪生数		

4.验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

a = input("请输入一个大于九的数:")
b = []
c = 0
d = 0
for i in range(0,len(a)):
    b.append(a[i])        #把字符串切片存储到列表中

for i in range(0,len(b)):
    d = d + int(b[i])
c = int(a) - d            #计算出各位数字之和

if i // 9 == 0:
    print("猜想正确")
else:
	print("猜想错误")

E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
请输入一个大于九的数:5201314
猜想正确

5.一个五位数,若在它的后面写上一个7,得到一个六位数A,
若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此
五位数.

for a in range(9999,100000):
    A = str(a) + str(7)
    B = str(7) + str(a)
    if int(B) / int(A) == 5:
        print(a)

E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
14285

6.有一种最简真分数,它们的分子与分母的乘积都是140,把
所有这样的真分数从小到大打印出来

print("100以内的真分数有:")
for i in range(1,100):
    for j in range(i + 1,100):
        if i * j ==140 and j > i:
            print("{}/{}".format(i,j))
            
E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
100以内的真分数有:
2/70
4/35
5/28
7/20
10/14

7.某数被80除所得的商,不但是7的倍数,而且用2,3,4,5,6去
除余数都是1,求这 个自然数.

flag = 0
for i in range(1,1000):
	shang = 80//i
	yushu = i%80
	a = i%2
	b = i%3
	c = i%4
	d = i%5
	e = i%6
	if shang%7==0 and a==1 and b==1 and c==1 and d==1 and e==1:
		flag += 1
		print(i,end="\t")
		#flag为5或10时,换行,用于输出结果易观察
		if flag == 5 or flag == 10:
			print()

#执行代码
D:\网络安全\Python\py_code>python de.py
121     181     241     301     361
421     481     541     601     661
721     781     841     901     961

8.编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和.

for i in range(100,1000):
	baiwei = i//100
	gewei = (i%100)%10
	shiwei = (i%100)//10
	if (i//11) ==(gewei+shiwei+baiwei):
		print(i,end="\t\t")

E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
108		118		128		138		148		158		168		178		188		197		198	

9.给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

ls = [10, 12, 1, -20, 30, -100, 0, 8, 9]


# 使用系统API
print(max(ls))
print(min(ls))
print(sum(ls) / len(ls))

#自己实现
max_value = 10
for i in ls:
	if i > max_value:
		# i就是最大值
		max_value = i

print("最大值是:", max_value)

min_value = 10
for i in ls:
	if i < min_value:
		min_value = i
print("最小值是:", min_value)

count = 0
for i in ls:
	count += i

print(count)
print("平均值是:", count/len(ls))

E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
30
-100
-5.555555555555555
最大值是: 30
最小值是: -100
-50
平均值是: -5.555555555555555

10.有一堆硬币,每堆的数量保存在数组 ls 中,每次只能拿一个或者两个,求最少多少次可以拿完硬币
LS = [10, 8, 5, 3, 27, 99]

cishu = 0
ls = [10, 8, 5, 3, 27, 99]
for i in ls:
    a = i % 2
    if a == 0:
        cishu = i // 2 + cishu
    else:
        cishu = i // 2 + cishu + 1
print("需要取%s次"%(cishu))


E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
需要取78

11.将list中的重复数据去重,至少使用两种方案

ls1=[1,5,7,8,4,1,5,8,4,10,11]
print(ls1)
print(list(set(ls1)))   #python中集合(set)可以去重,但是该容器是无序的
#输出结果
#[1, 5, 7, 8, 4, 1, 5, 8, 4, 10, 11]
#[1, 4, 5, 7, 8, 10, 11]
ls1=[1,5,7,8,4,1,5,8,4,10,11]
ls2=[]
for i in ls1:
    if i not in ls2:
        ls2.append(i)
print(ls1)
print(ls2)
#输出结果:
#[1, 5, 7, 8, 4, 1, 5, 8, 4, 10, 11]
#[1, 5, 7, 8, 4, 10, 11]
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小时候不乖的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值