Python初级练习小实例(21-50例),1个实例多个例子相互参考
Posted the丶only
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python初级练习小实例(21-50例),1个实例多个例子相互参考相关的知识,希望对你有一定的参考价值。
以下所有测试实例来自于菜鸟教程:https://www.runoob.com/python3/python3-examples.html
21、Python 最大公约数算法
最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。
个人参考代码
a = int(input("请输入整数a:"))
b = int(input("请输入整数b:"))
c = 0
if a >= b:
for i in range(1,b+1):
if a % i == 0 and b % i == 0:
print(f"i为公约数")
c = i
if b > a:
for i in range(1,a+1):
if a % i == 0 and b % i == 0:
print(f"i为公约数")
c = i
print(f"c为最大公约数")
执行结果
请输入整数a: 20
请输入整数b: 12
1为公约数
2为公约数
4为公约数
4为最大公约数
菜鸟教程参考代码
def hcf(x, y):
"""该函数返回两个数的最大公约数"""
# 获取最小值
if x > y:
smaller = y
else:
smaller = x
for i in range(1,smaller + 1):
if((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
# 用户输入两个数字
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print( num1,"和", num2,"的最大公约数为", hcf(num1, num2))
执行以上代码输出结果为:
输入第一个数字: 54
输入第二个数字: 24
54 和 24 的最大公约数为 6
其他人参考代码
可按以下思路减少循环次数:
-
当最小值为最大公约数时,直接返回;
-
当最小值不为最大公约数时,最大公约数不会大于最小值的1/2;
-
求最大公约数理应从大到小循环递减求最大。
def gcd(a, b):
if b > a:
a, b = b, a # b为最小值
if a % b == 0:
return b # 判断b是否为最大公约数
for i in range(b//2+1, 1, -1): # 倒序求最大公约数更合理
if b % i == 0 and a % i == 0:
return i
return 0
while(True):
a = int(input("Input 'a':"))
b = int(input("Input 'b':"))
print(gcd(a, b))
更简洁快速
def gcd(x, y): # very fast
return x if y == 0 else gcd(y, x%y)
print(gcd(378, 5940)) # result: 54
22、Python 最小公倍数算法
最小公倍数两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
个人参考代码
a = int(input("请输入整数a:"))
b = int(input("请输入整数b:"))
i = 1
while True:
i += 1
if i % a == 0 and i % b == 0:
print(f"最小公倍数是i")
break
执行结果:
请输入整数a: 30
请输入整数b: 12
最小公倍数是60
菜鸟教程参考代码
# 定义函数
def lcm(x, y):
# 获取最大的数
if x > y:
greater = x
else:
greater = y
while(True):
if((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
return lcm
# 获取用户输入
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print( num1,"和", num2,"的最小公倍数为", lcm(num1, num2))
执行以上代码输出结果为:
输入第一个数字: 54
输入第二个数字: 24
54 和 24 的最小公倍数为 216
其他人参考代码
按以下思路可减少循环次数:
1.当最大值为最小公倍数时,返回最大值;
2.当最大值不为最小公倍数时,最小公倍数为最大值的倍数。
# 最小公倍数
def lcm(a, b):
if b > a:
a, b = b, a # a为最大值
if a % b == 0:
return a # 判断a是否为最小公倍数
mul = 2 # 最小公倍数为最大值的倍数
while a*mul % b != 0:
mul += 1
return a*mul
while(True):
a = int(input("Input 'a':"))
b = int(input("Input 'b':"))
print(lcm(a, b))
23、Python 简单计算器实现
个人参考代码
def jia(a,b):
c = a + b
return c
def jian(a,b):
c = a - b
return c
def chen(a,b):
c = a * b
return c
def chu(a,b):
c = a / b
return c
a = int(input("请输入a的值:"))
x = str(input("请输入运算(+ - * /)符号:"))
if x == '+':
b = int(input("请输入b的值:"))
# jia(a,b)
print(jia(a,b))
elif x == '-':
b = int(input("请输入b的值:"))
print(jian(a,b))
elif x == '*':
b = int(input("请输入b的值:"))
print(chen(a,b))
elif x == '/':
b = int(input("请输入b的值:"))
print(chu(a,b))
执行结果:
请输入a的值:54
请输入运算(+ - * /)符号:/
请输入b的值:2
27.0
请输入a的值:32
请输入运算(+ - * /)符号:*
请输入b的值:4
128
请输入a的值:2
请输入运算(+ - * /)符号:-
请输入b的值:5
-3
菜鸟教程参考代码
# 定义函数
def add(x, y):
"""相加"""
return x + y
def subtract(x, y):
"""相减"""
return x - y
def multiply(x, y):
"""相乘"""
return x * y
def divide(x, y):
"""相除"""
return x / y
# 用户输入
print("选择运算:")
print("1、相加")
print("2、相减")
print("3、相乘")
print("4、相除")
choice = input("输入你的选择(1/2/3/4):")
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
if choice == '1':
print(num1,"+",num2,"=", add(num1,num2))
elif choice == '2':
print(num1,"-",num2,"=", subtract(num1,num2))
elif choice == '3':
print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
print(num1,"/",num2,"=", divide(num1,num2))
else:
print("非法输入")
执行以上代码输出结果为:
选择运算:
1、相加
2、相减
3、相乘
4、相除
输入你的选择(1/2/3/4):2
输入第一个数字: 5
输入第二个数字: 2
5 - 2 = 3
其他人参考代码
很简单的计算器,在输入框中输入计算表达式(如:2+2),按 GET RESULT 就可以计算:
from math import *
try:
from tkinter import *
except ImportError:
from Tkinter import *
def calc():
text = var.get()
result = eval(text)
result = result / 1.0
result = str(result)
var.set(result)
text = ''
result = ''
root = Tk()
pi = 3.1415926535897932
root.geometry('360x48')
root.resizable(width=False,height=False)
root.title('Mini Calculator')
var = StringVar()
entry = Entry(root,textvariable=var,width=360)
button = Button(root,text='GET RESULT',command=calc)
entry.pack()
button.pack()
root.mainloop()
24、Python 生成日历
引用包直接生成,相对简单
个人参考代码
import calendar
year = int(input("年份:"))
month = int(input("月份:"))
print(calendar.month(year,month))
执行结果
年份:2022
月份:8
August 2022
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
菜鸟教程参考代码
教程参考差不多也一样
# 引入日历模块
import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
# 显示日历
print(calendar.month(yy,mm))
执行以上代码输出结果为:
输入年份: 2015
输入月份: 6
June 2015
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
其他人参考代码
这个代码的缺点就是,我们日常用的日历都是星期天在前的。所以改进代码,应该加一行用以将星期天放在首位。
#生成日历
# 引入日历模块
import calendar
# 输入指定年月
yy = int(input("输入年份: "))
mm = int(input("输入月份: "))
calendar.setfirstweekday(firstweekday=6)#设置第一天是星期天
# 显示日历
print(calendar.month(yy,mm))
借鉴楼上的设置日期显示格式,将第一天设置为周日,写的一个显示一年 12 月份的日历
import calendar
calendar.setfirstweekday(firstweekday=6) # 显示出一年 12 个月份的日历
while True:
yy = int(input('input years:'))
# mm = int(input('input month:'))
for i in range(12):
print(calendar.month(yy, i + 1))
print('*' * 20)
25、Python 使用递归斐波那契数列
个人参考代码
a = 0
b = 1
##c = a + b
print(0)
for i in range(0,num):
c = a + b
a,b=b,c
print(c)
执行结果:
次数:10
0
1
2
3
5
8
13
21
34
55
89
菜鸟教程参考代码
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))
执行以上代码输出结果为:
您要输出几项? 10
斐波那契数列:
0
1
1
2
3
5
8
13
21
34
其他人参考代码
def Fib(n):
a, b = 0, 1
while n:
a, b, n = b, a + b, n - 1
print(a)
Fib(7)
26、Python 文件 IO
个人参考代码
f = open("test.txt","w")
f.write("这是测试文档")
f.close()
f = open("test.txt","r")
print(f.read())
f.close()
执行结果:
这是测试文档
菜鸟教程参考代码
# 写文件
with open("test.txt", "wt") as out_file:
out_file.write("该文本会写入到文件中\\n看到我了吧!")
# Read a file
with open("test.txt", "rt") as in_file:
text = in_file.read()
print(text)
执行以上代码输出结果为:
该文本会写入到文件中
看到我了吧!
注:with…as,就是个python控制流语句,像 if ,while一样。
with…as语句是简化版的try except finally语句。
其他人参考代码
w, r, wt, rt 都是 python 里面文件操作的模式。
w 是写模式,r 是读模式。
t 是 windows 平台特有的所谓 text mode(文本模式),区别在于会自动识别 windows 平台的换行符。
类 Unix 平台的换行符是 \\n,而 windows 平台用的是 \\r\\n 两个 ASCII 字符来表示换行,python 内部采用的是 \\n 来表示换行符。
rt 模式下,python 在读取文本时会自动把 \\r\\n 转换成 \\n。
wt 模式下,Python 写文件时会用 \\r\\n 来表示换行。
在 Windows 下,文件路径前需要加 r 取消 \\ 转义或者将 \\ 用 \\ 转义,否则会转码错误。
'''文件IO'''
with open(r'C:\\Users\\Administrator\\Desktop\\s.txt','wt') as fileout:
fileout.write("写一行中文试试\\n")
with open(r'C:\\Users\\Administrator\\Desktop\\s.txt','rt') as filein:
print(filein.readline())
27、Python 字符串判断
个人参考代码
python自带方法
a = str(input("请输入值:"))
if a.isalpha() == True:
print(f"a所以字符都是字母")
elif a.isdigit() == True:
print(f"a所以字符都是数字")
执行结果:
请输入值:123
123所以字符都是数字
请输入值:asd
asd所以字以上是关于Python初级练习小实例(21-50例),1个实例多个例子相互参考的主要内容,如果未能解决你的问题,请参考以下文章
Python初级练习小实例(1-20例),1个实例多个例子相互参考