Python100道练习题
BIlibili
1、两数之和
num1 = 20
num2 = 22
result = num1 + num2
print(result)
2、一百以内的偶数
list1 = []
for i in range(1,100):
if i % 2 == 0:
list1.append(i)
print(list1)
3、一百以内的奇数
# 方法一
list1 = []
for i in range(1,100):
if i % 2 != 0:
list1.append(i)
print(list1)
# 方法二
list2 = [i for i in range(1,100) if i % 2 != 0]
print(list2)
# 方法三
list3 = [i for i in range(1,100,2)]
4、判断素数
编写程序,判断某一个数是否为素数。所谓素数指的是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数:
a = 37
flag = True
for i in range(2,a): # 注意range 是左闭右开
if a % i == 0:
flag = False
break # 一旦判断成功后,后面就没必要继续了
if flag:
print('a不是素数')
else:
print('a是素数')
5、求阶乘
编写程序,求出某个自然数的阶乘。一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!
a = 5
# 方法一
if a == 0 or a == 1:
print('阶乘为: 1')
else:
sum = 1
for i in range(2,a+1): # 包括本身
sum *= i
print('阶乘为:',sum)
# 方法二 递归
def fun(x):
if x == 1:
return 1
else:
return x * fun(x - 1)
print(fun(a))
# 方法三 math.factorial()
import math
print(math.factorial(a))
6、求圆的周长
程序编写:输入半径,求出圆的周长
圆的周长:2πr
import math
r = float(input('请输入圆的半径:'))
girth = 2 * r * math.pi
print('周长是',round(girth,2)) # round 保留两位小数
7、求圆的面积
程序编写:输入半径,求出圆的面积
圆的周长:πrr
import math
r = float(input('请输入圆的半径:'))
girth = r * r * math.pi
print('面积是',round(girth,2)) # round 保留两位小数
8、求直角三角形斜边的边长
编写程序:输入两个直角边,求出三角形斜边的长度
勾股定理:a2 + b2 = c2
import math
a = 3
b = 4
cfang = math.pow(a,2) + math.pow(b,2)
# 或者 math.pow(cfang,0.5) or cfang ** 0.5
print('三角形斜边的长度: ',math.sqrt(cfang))
9、比较三个数大小
编写程序:输入三个数,从小到大输出三个数
a = int(input('请输入第一个数:'))
b = int(input('请输入第二个数:'))
c = int(input('请输入第三个数:'))
lst = [a,b,c]
# 方法一:list.sort() ,sort(reverse=False) 默认False 升序
lst.sort()
print(lst)
# 方法二:sorted(lst)
list1 = sorted([a,b,c])
print(list1)
10、找出区间内的素数
编写程序,输入整数a、b表示一个闭区间,找出该区间内的所有素数并打印。
# 判断素数函数
def prime(x):
flag = True
for i in range(2, x):
if x % i == 0:
flag = False
break
return flag
# 闭区间
a = 10 # 左端点
b = 20 # 右端点
num_list = []
for i in range(a,b+1):
if prime(i):
num_list.append(i)
print(num_list)
11、组合数字
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
# 方法一
str1 = '1234'
for i in str1:
for j in str1:
for k in str1:
if i == j or i == k or j == k:
continue
print(i+j+k)
# 方法二
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if not(i == j or i == k or j == k):
print(f'{i}{j}{k}')
12、打印乘法口诀表
for i in range(1,10):
for j in range(1,i+1):
print(f'\t{j} * {i} = {i * j}',end=' ')
print()
13、水仙花数
水仙花数:是一个三位数,各位数字立方和等于该数字本身。
import math
# 水仙花数:是一个三位数,各位数字立方和等于该数字本身。
num_list = []
for i in range(100,1000):
hundred = i // 100
ten = i // 10 % 10
piece = i % 10
if (math.pow(hundred,3) + math.pow(ten,3)+ math.pow(piece,3)) == i:
num_list.append(i)
print(num_list)
14、反向输出四位数
编写程序,输入一个四位整数,反对输出对应四位数
# 编写程序,输入一个四位整数,反对输出对应四位数
st = input('请输入一个四位数')
st = st[::-1]
print(int(st))
15、判断字母
编写程序,输入字符,判断是否为字母
# 编写程序,输入字符,判断是否为字母
a = input('请输入字符: ')
result = a.isalpha() # 判断字母
if result:
print(f'{a}是字母')
else:
print(f'{a}不是字母')
16、判断三角形
编写程序,输入三组数据,判断能否构成三角形的三条边
a, b, c = [4, 5, 6]
if a <= 0 or b <= 0 or c <= 0:
print('输入的数据不合法')
if a + b < c or a + c < b or b + c < a:
print('不构成三角形')
else:
print('构成三角形')
17、完数
个数如恰好等于除了它以外的因子之和,这个数就称为“完数”。编程序找出1000以内的所有完数,(6是一个"完数",它的因子是1,2,3)。
for i in range(1,1000):
sum = 0
for j in range(1,i):
if i % j == 0:
sum += j
if sum == i:
print(i,'是完数')
18、找出质数因子
输入一个正整数,输出它的所有质数因子(如180的质数因子为2、2、3、3、5)。
多个素数的乘积
从第一个数开始,也就是说从2开始,整除一下输入的数
a = int(input('请输入一个自然数:'))
y = 2
list1 = []
while a != y:
if a % y == 0:
list1.append(y)
a /= y
else:
y += 1
list1.append(int(a)) # 最后剩下的a
print(list1)
19、海伦公式求三角形面积
海伦公式是利用三角形的三条边的边长直接求三角形面积的公式
p = ( a + b + c ) / 2 p = (a+b+c)/2 p=(a+b+c)/2
S = p ( p − a ) ( p − b ) ( p − c ) S = \sqrt{p(p-a)(p-b)(p-c)} S=p(p−a)(p−b)(p−c)
import math
a = 10
b = 10
c = 10
p = (a+b+c)/2
S = math.sqrt(p * (p-a) * (p-b) * (p-c))
print('三角形的面积是:',round(S,2))
20、判断某年某天
输入某年某月某日,判断这一天是这一年的第几天
import datetime
# map 把年月日都转成 int类型
year,month, day = map(int, input('请输入年月日: ').split('-'))
# 拿到当年的第一天
yundan = datetime.datetime(year,1,1) #
now = datetime.datetime(year, month, day)
print((now - yundan).days + 1)
21、斐波那契数列
# 递归
def fib(x):
if x == 1 or x == 2:
return 1
else:
return fib(x-1) + fib(x-2)
print(fib(6))
# 非递归
n = 6
fibs = [1,1]
for i in range(2, n):
# fibs.append(fibs[-1] + fibs[-2])
fibs.append(fibs[i - 1] + fibs[i - 2])
print(fibs[n-1])
22、复制列表
将一个列表中的数据,复制到另一个列表中
import copy
list1 = [1,2,3,4]
list2 = copy.copy(list1)
print(list2)
list1 = [1,2,3,4]
lsit2 = list1.copy()
print(lsit2)
23、暂停后输出
暂停一段时间后输出
import time
time.sleep(1) # 以秒为单位
print("Hello Python! ")
24、成绩if语句
利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
score = int(input('请输入你的成绩: '))
flag = ''
if score >= 90:
flag = "A"
elif score >= 60:
flag = "B"
else:
flag = 'C'
print(flag)
25、统计字符
输入一行字符,分别统计出其中英文字母空格、数字和其它字符的个数。
# 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
string = input('请输入一段字符串:')
char,space,number,other = 0,0,0,0
# 方法一
for i in string:
if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
char += 1
elif i == ' ':
space += 1
elif '0' <= i <= '9':
number += 1
else:
other += 1
# 方法二:
for i in string:
if i.isalpha(): # 判断字符串
char += 1
elif i.isdigit(): # 判断数字
number += 1
elif i.isspace(): # 判断空格
space += 1
else:
other += 1
print(f'英文字母有{char}个,数字有{number}个,空格有{space}个,其他字符有{other}个。')
26、落体反弹问题
球从100米高度*落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
n = 100
count = 0
list1 = []
# 方法一
while count < 10:
if count == 0: # 第一次弹跳,马上要落下来
list1.append(n)
n /= 2
count += 1
else:
list1.append(2 * n) # 这是一个 上下的距离
n /= 2
count += 1
print(sum(list1))
# 方法二
# 球的高度
height = 100
# 落地的次数
frequency = 10
sum = 0
for i in range(1,frequency):
sum += height # 落下
height /= 2
sum += height # 上来
print(f'第{i}次下落,高度为:{height}')
print(sum)
27、猴子吃桃问题
猴子吃桃问题:猴子第一天摘下若干个桃子当即吃了一半,还不瘾,又多吃了一个第天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少
# 每天吃了 一半 + 1, 第十天就剩下1个了, 求第一天摘了多少
x = 1
for i in range(1, 10):
x = (x + 1) * 2
print(x)
28、求指数数列的和
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
# 方法一
fibs = [1,1]
for i in range(20):
fibs.append(fibs[-1] + fibs[-2])
sum = 0
for i in range(2,22):
sum += fibs[i] / fibs[i-1]
print(sum)
# 方法二
sum = 0 # 最后的结果
up = 2 # 分子
down = 1 # 分母
for i in range(20):
sum += up/down
up, down = down + up, up
print(sum)
29、求各个阶乘的和
求1+2!+3!+…+20!的和.
sum = 1
# 方法一
for i in range(2,21):
target = 1
for j in range(1,i + 1): # 阶乘包括本身
target *= j
sum += target
print(sum)
import math
sum = 0
for i in range(1,21):
sum += math.factorial(i)
print(sum)
30、年龄急转弯
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
def func(n):
if n == 1:
return 10
else:
return func(n - 1) + 2