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
5424 的最大公约数为 6

其他人参考代码

可按以下思路减少循环次数:

  1. 当最小值为最大公约数时,直接返回;

  2. 当最小值不为最大公约数时,最大公约数不会大于最小值的1/2;

  3. 求最大公约数理应从大到小循环递减求最大。

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
5424 的最小公倍数为 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个实例多个例子相互参考

Python初级练习小实例(1-20例),1个实例多个例子相互参考

python初级(302) 7 列表(排序练习)

python初级(302) 8 列表(选择排序练习二)

Python入门练手100例

Python 练习实例11