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]

 

posted @ 2024-03-22 10:40  小吉猫  阅读(30)  评论(0编辑  收藏  举报