15个经典基础Python练手案例,基本功就是这样练成的

1. 判断素数

判断一个数字是否为素数是Python编程中的经典问题。素数是指只能被1和本身整除的自然数。以下代码演示了如何判断一个数是否为素数。

def is_prime(num):

if num < 2:

return False

for i in range(2, int(num ** 0.5) + 1):

if num % i == 0:

return False

return True

代码解释:

第2行:如果num小于2,则它不是素数,直接返回False。

第3行:从2到num开根号向上取整的整数范围内遍历每个数字。

第4行:如果num可以被当前数字整除,则num不是素数,直接返回False。

第6行:如果num没有被整除,说明它是素数,返回True。

运行is_prime(7),结果为True。

1.1 参考链接

Python判断素数

2. 冒泡排序

冒泡排序是一种经典的排序算法,其基本思想是重复地遍历要排序的数组,每次遍历比较相邻的两个元素,如果它们的顺序错误就交换它们的位置,直到没有任何一对数字需要交换为止。以下代码演示了如何实现冒泡排序。

def bubble_sort(arr):

n = len(arr)

for i in range(n):

for j in range(0, n - i - 1):

if arr[j] > arr[j + 1]:

arr[j], arr[j + 1] = arr[j + 1], arr[j]

return arr

代码解释:

第2行:定义数组arr的长度为n。

第3-5行:遍历数组,每次从第一个元素开始比较相邻的元素,如果顺序错误就交换它们的位置,直到遍历到倒数第i个元素,即最后一个未排序的元素。

第6行:返回排好序的数组。

运行bubble_sort([64, 34, 25, 12, 22, 11, 90]),结果为[11, 12, 22, 25, 34, 64, 90]。

2.1 参考链接

Python冒泡排序

3. 快速排序

快速排序是一种常用的排序算法,其基本思想是选取一个基准元素(通常选择数组的第一个元素或最后一个元素),将数组分成两个部分,一部分包含比基准元素小的所有元素,另一部分包含比基准元素大的所有元素,然后再按照此方法对这两部分递归排序,直到整个序列有序。以下代码演示了如何实现快速排序。

def quick_sort(arr):

if len(arr) <= 1:

return arr

pivot = arr[0]

left = [x for x in arr[1:] if x <= pivot]

right = [x for x in arr[1:] if x > pivot]

return quick_sort(left) + [pivot] + quick_sort(right)

代码解释:

第2行:如果数组长度小于等于1,直接返回数组。

第3行:选取数组的第一个元素作为基准元素。

第4-5行:将数组分成两个部分,分别包含比基准元素小和比基准元素大的所有元素。

第6行:递归地对左半部分排序。

第7行:将基准元素与左半部分和右半部分排序后的数组合并。

运行quick_sort([64, 34, 25, 12, 22, 11, 90]),结果为[11, 12, 22, 25, 34, 64, 90]。

3.1 参考链接

Python快速排序

4. 斐波那契数列

斐波那契数列是一个经典的数列,它的第0项是0,第1项是1,后面的每一项都是前面两项的和。以下代码演示了如何生成斐波那契数列。

def fibonacci_sequence(n):

if n == 0:

return []

if n == 1:

return [0]

if n == 2:

return [0, 1]

else:

fib = fibonacci_sequence(n - 1)

fib.append(fib[-1] + fib[-2])

return fib

代码解释:

第2行:如果n等于0,则返回空数组。

第3行:如果n等于1,则返回只含有第0项的数组。

第4行:如果n等于2,则返回含有第0项和第1项的数组。

第5行:递归地计算前n-1项斐波那契数列。

第6行:将当前项(即前一项和前两项的和)添加到数组末尾。

第7行:返回计算出的斐波那契数列。

运行fibonacci_sequence(10),结果为[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]。

4.1 参考链接

Python生成斐波那契数列

5. 最大公约数和最小公倍数

最大公约数和最小公倍数是数学中的两个重要概念,在Python中可以用以下代码计算。

def gcd(a, b):

if b == 0:

return a

else:

return gcd(b, a % b)

def lcm(a, b):

return a * b // gcd(a, b)

代码解释:

第2行:如果b等于0,a即是最大公约数。

第5行:如果b不等于0,将a除以b的余数作为新的a,b作为新的b继续递归。

第8行:最小公倍数为两数之积除以最大公约数。

运行gcd(54, 24),结果为6;运行lcm(54, 24),结果为216。

5.1 参考链接

Python计算最大公约数和最小公倍数

6. 简单计算器

计算器是经典的编程练手项目之一,以下代码演示了如何实现一个简单的计算器。

def calculator():

a = float(input('输入第一个数字:'))

op = input('输入运算符(+、-、*、/):')

b = float(input('输入第二个数字:'))

if op == '+':

return a + b

elif op == '-':

return a - b

elif op == '*':

return a * b

elif op == '/':

return a / b

else:

return '运算符错误'

print(calculator())

代码解释:

第2-4行:分别输入第一个数字、运算符和第二个数字。

第5-11行:根据运算符执行相应的计算并返回结果,如果运算符不是'+''-''*''/',返回错误信息。

第13行:运行calculator()函数并输出结果。

输入5、+、3,结果为8.0。

6.1 参考链接

Python计算器

7. 水仙花数

水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个三位数,它的每个位上的数字的三次幂之和等于它本身:1^3 + 5^3 + 3^3 = 153。以下代码演示了如何判断一个数是否为水仙花数。

def is_armstrong(num):

n = len(str(num))

total = 0

for digit in str(num):

total += int(digit) ** n

return num == total

print(is_armstrong(153))

代码解释:

第2行:计算数字的位数。

第3行:初始化总和为0。

第4-6行:遍历数字的各位数,将每位数的n次方加到总和中。

第7行:如果总和等于数字本身,即为水仙花数,返回True。

第9行:运行is_armstrong(153)函数并输出结果。

结果为True。

7.1 参考链接

Python判断水仙花数

8. 阶乘

阶乘是指从1到n所有正整数的乘积,以n!表示,0!等于1。以下代码演示了如何计算阶乘。

def factorial(n):

if n == 0:

return 1

else:

return n * factorial(n - 1)

print(factorial(5))

代码解释:

第2行:如果n等于0,阶乘为1。

第4行:递归地计算(n-1)的阶乘,然后将n乘以计算结果。

第6行:运行factorial(5)函数并输出结果。

结果为120。

8.1 参考链接

Python计算阶乘

9. 素数区间筛法

区间筛法是一种寻找素数的算法,它的基本思想是将区间内的数分解成若干个质因数的积,然后找出所有素数。以下代码演示了如何使用区间筛法查找素数。

def prime_sieve(n):

is_prime = [True] * (n + 1)

is_prime[0] = False

is_prime[1] = False

for i in range(2, int(n ** 0.5) + 1):

if is_prime[i]:

for j in range(i * i, n + 1, i):

is_prime[j] = False

return [i for i in range(n + 1) if is_prime[i]]

print(prime_sieve(100))

代码解释:

第2行:初始化一个长度为n+1的数组,所有元素都为True。

第3-4行:将0和1标记为非素数。

第5行:遍历区间中的每个数字。

第6行:如果当前数字是素数,将它的倍数标记为非素数。这里只需要遍历小于n的平方根的数,因为如果一个数大于平方根而小于n,那么它必定可以被一个小于等于平方根的数整除,因此它不是质数。

第7行:返回所有标记为True的数,即素数。

第9行:运行prime_sieve(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]

9.1 参考链接

Python区间筛法

10. 常见文件操作

文件操作是Python编程中不可或缺的一部分,以下代码演示了如何使用Python

后端开发标签