python编程练习

python编程练习(一)

本文所有题目均出自

python3菜鸟教程

仅作为自己练习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
5424的最大公约数为: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
5424的最小公倍数为: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']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CinzWS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值