python 代码练习示例
判断数字位数
## 给定一个不超过5位的整数,判定该数的位数,以及依次打印,万位到个位。
# 接收用户输入的整数
num = int(input("请输入一个小于等于5位数的整数:"))
# 将整数转换为字符串,计算整数的位数
num_str = str(num)
length = len(num_str)
if length > 5:
print("输入的整数超过5位,请重新输入")
else:
# 根据位数逐个打印数字
for i in range(length):
print(f"{10 ** (length - i - 1)}位:{int(num_str[i])}")
# =========================
# 接收用户输入的整数
num = int(input("请输入一个不超过5位数的整数:"))
# 判断整数的位数
length = len(str(num))
if length > 5:
print("输入的整数超过5位,请重新输入")
else:
# 根据位数逐个打印数字
if length >= 5:
print("万位:", num // 10000 % 10)
if length >= 4:
print("千位:", num // 1000 % 10)
if length >= 3:
print("百位:", num // 100 % 10)
if length >= 2:
print("十位:", num // 10 % 10)
if length >= 1:
print("个位:", num % 10)
打印空心正方形
# 打印空心正方形
# 定义边长
side_length = 5
# 外层循环控制行数
for i in range(side_length):
if i == 0 or i == side_length - 1:
# 打印完整行
print("*" * side_length)
else:
# 打印空心部分
print("*" + " "*(side_length-2) + "*")
# =============
输出:
*****
* *
* *
* *
*****
阶乘
# 阶乘
# 接收用户输入的整数
num = int(input("请输入一个正整数:"))
# 初始化阶乘结果为1
factorial = 1
# 计算阶乘
for i in range(1, num + 1):
factorial *= i
# 输出结果
print(f"{num}的阶乘是:{factorial}")
# ============================
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# 接收用户输入的整数
num = int(input("请输入一个正整数:"))
# 调用递归函数计算阶乘
result = factorial(num)
# 输出结果
print(f"{num}的阶乘是:{result}")
数字求和
# 求和
# 初始化奇数和和偶数和为0
sum_odd = 0
sum_even = 0
# 遍历1到100的所有数字
for i in range(1, 101):
# 判断是否为奇数
if i % 1:
# 如果是奇数则加上该数
sum_odd += i
else:
# 如果是偶数则加上该数
sum_even += i
# 输出结果
print("100以内的奇数和为:", sum_odd)
# ======================
# 奇数和
# 初始化和为0
sum_odd = 0
# 遍历1到100的所有奇数,步长设为2
for i in range(1, 101, 2):
sum_odd += i
# 输出结果
print("100以内的奇数和为:", sum_odd)
素数判定
# 判定素数,大于1的自然数只能被1和它自身整除
def is_prime(num):
if num <= 1:
return False
if num == 2:
return True
if num % 2 == 0:
return False
for i in range(3, int(num**0.5) + 1, 2):
if num % i == 0:
return False
return True
# 输入一个数
num = int(input("请输入一个整数:"))
# 判断是否为素数
if is_prime(num):
print(num, "是素数")
else:
print(num, "不是素数")
# =========================
import math
def is_prime(num):
if num <= 1:
return False
if num == 2:
return True
if num % 2 == 0:
return False
for i in range(3, int(math.sqrt(num)) + 1, 2):
if num % i == 0:
return False
return True
# 输入一个数
num = int(input("请输入一个整数:"))
# 判断是否为素数
if is_prime(num):
print(num, "是素数")
else:
print(num, "不是素数")
# ========================
def is_prime(num):
if num <= 2:
return False
if num % 2 == 0:
return True
for i in range(3,int(num**0.5)+1,2):
if num % i == 0:
return False
return True
# 打印10万以内的所有素数
for num in range(3,100001,2):
if is_prime(num):
print(num, "是素数")
# ==============
def prime_sieve(limit):
sieve = [True] * (limit + 1)
sieve[0], sieve[1] = False, False
for i in range(2, int(limit**0.5) + 1):
if sieve[i]:
sieve[i*i:limit+1:i] = [False] * ((limit - i*i) // i + 1)
return [num for num, is_prime in enumerate(sieve) if is_prime]
# 打印10万以内的所有素数
primes = prime_sieve(100000)
for prime in primes:
print(prime)
打印九九乘法表
# 九九乘法表
# 正常写法
for i in range(1, 10):
for j in range(1, i+1):
# 使用字符串格式化和空格填充占用两个字符的宽度并右对齐输出,
print(f"{j}x{i}={i*j:2}", end="\t")
# 打印换行符
print()
# 列表推导式的写法一
[print(' '.join(f"{i}*{j}={i * j:2}" for j in range(1, i + 1))) for i in range(1, 10)]
# 列表推导式的写法二
[ print("{}*{}={:<3}{}".format(i,j,i*j,'\n' if i == j else ''),end='') for j in range(1,10) for i in range(1,j+1) ]
# 输出结果
1x1= 1
1x2= 2 2x2= 4
1x3= 3 2x3= 6 3x3= 9
1x4= 4 2x4= 8 3x4=12 4x4=16
1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25
1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8= 8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
打印菱形
# 打印菱形
# 获取菱形的大小
size = int(input("请输入菱形的大小(奇数):"))
# 上半部分菱形
for i in range(1, size+1, 2):
print(" "*(size//2 - i//2) + "*" * i)
# 下半部分菱形
for i in range(size-2, 0, -2):
print(" "*(size//2 - i//2) + "*" * i)
# =============
输出:
请输入菱形的大小(奇数):5
*
***
*****
***
*
斐波那契数列
# 斐波那契数列
# 初始化斐波那契数列的前两项
a, b = 0, 1
# 打印斐波那契数列
print("斐波那契数列:", end=" ")
while a <= 100:
print(a, end=" ")
a, b = b, a + b
# ====
输出:
斐波那契数列: 0 1 1 2 3 5 8 13 21 34 55 89
# =========================================
# 计算斐波那契数列中第105个数
def fibonacci(n):
a, b = 0, 1
for _ in range(n-1):
a, b = b, a + b
return a
# 计算第105个斐波那契数
result = fibonacci(105)
print("斐波那契数列中第105个数是:", result)
打印杨辉三角
def generate(numRows):
# 生成杨辉三角的每一行的生成器函数
row = [1] # 初始化第一行
for _ in range(numRows):
yield row # 返回当前行
# 生成下一行,利用zip函数和列表生成式计算每个数字
row = [x + y for x, y in zip([0] + row, row + [0])]
def print_triangle(triangle):
max_width = len(" ".join(map(str, triangle[-1]))) # 计算最大宽度
for row in triangle:
# 打印每一行,保持居中对齐
print(" ".join(map(str, row)).center(max_width))
numRows = 5
triangle = list(generate(numRows)) # 生成杨辉三角
print_triangle(triangle) # 打印杨辉三角
输出
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
转置矩阵
# 给定的矩阵
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 使用列表推导式创建转置矩阵
transpose_matrix = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
# 打印原始矩阵和转置矩阵
print("原始矩阵:")
for row in matrix:
print(row)
print("转置矩阵:")
for row in transpose_matrix:
print(row)
输出
原始矩阵:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
转置矩阵:
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]