python编程练习(一)
本文所有题目均出自
仅作为自己练习python编程使用。
1、python 数字求和
# 用户输入两个数字
num1=float(input("输入第一个数字:"))
num2=float(input("输入第二个数字:"))
# 求和
sum=num1+num2
print(f'sum={sum}')
print("sum={}".format(sum))
输出
输入第一个数字:5
输入第二个数字:6
sum=11.0
sum=11.0
2、python 平方根
import math
num=float(input('请输入一个数字'))
num_sqrt=math.sqrt(num)
print(num_sqrt)
输出
请输入一个数字4
2.0
3、Python 二次方程
# ax^2+bx+c=0
# a,b,c为实数,a≠0
# 导入cmath(复杂数学运算)模块
import cmath
a=float(input('输入a:'))
b=float(input('输入b:'))
c=float(input('输入c:'))
# 计算
d=(b**2)-4*a*c
# 两种求解方式
sol1=(-b+cmath.sqrt(d))/(2*a)
sol2=(-b-cmath.sqrt(d))/(2*a)
print("结果为{}和{}".format(sol1,sol2))
输出
输入a:2
输入b:3
输入c:4
结果为(-0.75+1.1989578808281798j)和(-0.75-1.1989578808281798j)
4、Python 计算三角形的面积
a=float(input('输入a:'))
b=float(input('输入b:'))
c=float(input('输入c:'))
# 计算半周长
s=(a+b+c)/2
# 计算面积
area=(s*(s-a)*(s-b)*(s-c))**0.5
print("三角形面积为%0.2f"%area)
输出
输入a:3
输入b:4
输入c:5
三角形面积为6.00
5、Python 计算圆的面积
import math
def CycleArea(r):
return math.pi*r*r
r=float(input("请输入圆的半径:"))
s=CycleArea(r)
print("半径为{}的面积为{}".format(r,s))
输出
请输入圆的半径:4
半径为4.0的面积为50.26548245743669
6、Python 交换变量
# 用户输入
x=input('输入x变量:')
y=input('输入y变量:')
def change(x,y):
temp=x
x=y
y=temp
return x,y
x,y=change(x,y)
print('交换后x={},y={}'.format(x,y))
输出
输入x变量:2
输入y变量:3
交换后x=3,y=2
7、Python 判断奇数偶数
num=int(input("请输入一个整数:\n"))
if ((num & 0x1)==0):
print(f'{num}是一个偶数')
else:
print("{}是一个奇数".format(num))
输出
请输入一个整数:
17
17是一个奇数
8、Python 判断闰年
year=int(input("输入一个年份:"))
if (year%4)==0:
if(year % 100)==0:
if (year%400)==0:
print("{0}是闰年".format(year)) # 整百能被400整除
else:
print("{0}不是闰年".format(year))
else:
print("{0}是闰年".format(year)) # 非整百能被4整除
else:
print("{0}不是闰年".format(year))
输出
输入一个年份:2008
2008是闰年
9、Python 质数判断
#该数除了1和它本身以外不再有其他的因数。
num=int(input("请输入一个大于1的整数:"))
if num>3:
for i in range(2,int(num/2)+1): # 只需要判断输入数的一半即可,减少运算时间
if (num % i)==0:
print('{0}可以被{1}整除,故{0}不是质数'.format(num,i))
break
else:
print(f'{num}是质数')
elif (num==2)|(num==3):
print(f'{num}是质数')
else:
print(f'{num}不是质数')
输出
请输入一个大于1的整数:5
5是质数
10、Python 输出指定范围内的素数
# 素数(prime number)又称质数,有无限个。
# 除了1和它本身以外不再被其他的除数整除。
lower=int(input('输入区间最小值:'))
upper=int(input('输入区间最大值:'))
for num in range(lower,upper+1):
# 素数大于1
if num>1:
for i in range(2,int(num/2)+1):
if(num % i)==0:
break
else:
print(num)
输出
输入区间最小值: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
11、Python 阶乘实例
# n!=1×2×3×...×n。
# 获取用户输入的数字
num=int(input('请输入一个正整数:'))
factorial=1
if num<0:
print("负数没有阶乘")
elif num==0:
print('0的阶乘为1')
else:
for i in range(1,num+1):
factorial *= i
print('{0}的阶乘为{1}'.format(num,factorial))
输出
请输入一个正整数:5
5的阶乘为120
12、Python 九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('{0}*{1}={2}\t'.format(j,i,i*j),end='')
print('\r')
输出
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
13、Python 斐波那契数列
# 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,
# 特别指出:第0项是0,第1项是第一个1。
# 从第三项开始,每一项都等于前两项之和。
# 获取用户输入数据
nterms=int(input("你需要几项?"))
# 第一和第二项
n1=0
n2=1
count=2
# 判断输入的值是否合法
if nterms<=0:
print("请输入一个正整数")
elif nterms==1:
print('斐波那契数列:')
print(n1)
else:
print("斐波那契数列:")
print(n1,' ',n2,end=' ')
while count<nterms:
nth=n1+n2
print(nth,end=' ')
n1=n2
n2=nth
count +=1
输出
你需要几项?10
斐波那契数列:
0 1 1 2 3 5 8 13 21 34
14、Python 阿姆斯特朗数
# 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。
# 例如1^3 + 5^3 + 3^3 = 153。
# 1000以内的阿姆斯特朗数:
for i in range(1,1000):
bai,shi,ge=i//100,i%100//10,i%10
if (bai**3+shi**3+ge**3)==i:
print(i)
输出
1
153
370
371
407
15、Python 最大公约数算法
def hcf(x,y):
x,y=max(x,y),min(x,y)
for i in range(1,x+1):
if (x%i==0) and (y%i==0):
hcf=i
return hcf
num1=int(input("输入num1: "))
num2=int(input("输入num2: "))
print('{0}和{1}的最大公约数为:{2}'.format(num1,num2,hcf(num1,num2)))
输出
输入num1: 54
输入num2: 24
54和24的最大公约数为:6
16、Python 最小公倍数算法
def lcm(x,y):
# x,y=max(x,y),min(x,y)
for i in range(1,x*y+1): # 最小公倍数最大为x*y
if (i%x==0) and (i%y==0):
lcm=i
break
i+=1
return lcm
num1=int(input("输入num1: "))
num2=int(input("输入num2: "))
print('{0}和{1}的最小公倍数为:{2}'.format(num1,num2,lcm(num1,num2)))
输出
输入num1: 54
输入num2: 24
54和24的最小公倍数为:216
17、Python 生成日历
# 引入日历模块
import calendar
# 输入指定年月
yy=int(input('输入年份:'))
mm=int(input('输入月份:'))
# 显示日历
print(calendar.month(yy,mm))
输出
输入年份:2021
输入月份:12
December 2021
Mo Tu We Th Fr Sa Su
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
18、Python 使用递归斐波那契数列
def recur_fibo(n):
"""
递归函数,输出斐波那契数列
"""
if n<=1:
return n
else:
return (recur_fibo(n-1)+recur_fibo(n-2))
# 获取用户输入
nterms=int(input("您要输出几项?"))
# 检查输入的数字是否正确
if nterms<=0:
print("请输入正数")
else:
print("斐波那契数列:")
for i in range(nterms):
print(recur_fibo(i))
输出
您要输出几项?5
斐波那契数列:
0
1
1
2
3
19、Python 文件 IO
# 写文件
with open('./test.txt','w+') as out_file:
out_file.write('你好啊\n你真棒!')
out_file.close()
# 读文件
with open('./test.txt','r+') as in_file:
text=in_file.read()
print(text)
in_file.close()
输出
你好啊
你真棒!
20、Python list 常用操作
# 使用join连接list成为字符串
params={'server':'mp','database':'master','uid':'sa','pwd':'secret'}
['{0}={1}'.format(k,v) for k,v in params.items()]
';'.join(['{0}={1}'.format(k,v) for k,v in params.items()])
输出
['server=mp', 'database=master', 'uid=sa', 'pwd=secret']
'server=mp;database=master;uid=sa;pwd=secret'
# list 分割字符串
li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
print(s)
s.split(';')
s.split(';',1)
输出
'server=mpilgrim;uid=sa;database=master;pwd=secret'
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']
# list映射解析
li=[1,9,8,7]
[elem*2 for elem in li]
输出
[2, 18, 16, 14]
# dictionary 中的解析
params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
params.keys()
params.values()
params.items()
输出
dict_items([('server', 'mpilgrim'), ('database', 'master'), ('uid', 'sa'), ('pwd', 'secret')])
["%s=%s" % (k, v) for k, v in params.items()]
输出
['server=mpilgrim', 'database=master', 'uid=sa', 'pwd=secret']
li = ["a", "mpilgrim", "foo", "b", "c", "b", "d", "d"]
[elem for elem in li if len(elem)>1]
输出
['mpilgrim', 'foo']