Python编程实战:12道趣味算法题

题目 - 01

输入任意一个正整数,求出它是几位数。

python 复制代码
num = input("请输入一个正整数:")
if int(num) > 0:
    digit_count = len(num)
    print(f"你输入的数字 {num} 是 {digit_count} 位数")
else:
        print("输入错误!请输入**大于0**的正整数\n")

运行结果如下图所示:

题目 - 02

求两个数的最大公约数和最小公倍数

python 复制代码
a = int(input("请输入第一个数:"))
b = int(input("请输入第二个数:"))
min_num = min(a, b)
for i in range(min_num, 0, -1):
    if a % i == 0 and b % i == 0:
        g = i
        break
l = a * b // g
print("最大公约数:", g)
print("最小公倍数:", l)

运行结果如下图所示:

题目 - 03

求100以内的素数之和。素数是一个大于1的正整数,除了1和它本身以外不能被其他正整数整除。

python 复制代码
sum_prime = 0
for i in range(2, 101):
    flag = True
    for j in range(2, i):
        if i % j == 0:
            flag = False
            break
    if flag:
        sum_prime += i
print("100以内素数之和为:", sum_prime)

运行结果如下图所示:

题目 - 04

编程实现一个猜数字游戏,要求如下。在1--1000中随机生成一个数赋值给sys_num,通过控制台输入一个整数赋值给user_num,判断user_num与sys_num的关系。

  • 如果user_num大于sys_num,就提示"猜大了";
  • 如果user_num小于sys_num,就提示"猜小了";
  • 如果两者相等,就提示"恭喜你中奖了"。
  • 只要没中奖,就需要一直猜下去。
python 复制代码
import random
sys_num = random.randint(1, 1000)
while True:
    user_num = int(input("请输入你猜的数字(1-1000):"))
    if user_num > sys_num:
        print("猜大了")
    elif user_num < sys_num:
        print("猜小了")
    else:
        print("恭喜你中奖了")
        break

运行结果如下图所示:

题目 - 05

一个整数,他加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(能表示为某个整数的平方的数成为完全平方数。)

python 复制代码
import math
for num in range(-100, 2000):
    x = num + 100
    y = x + 168
    s1 = int(math.sqrt(x))
    s2 = int(math.sqrt(y))
    if s1 * s1 == x and s2 * s2 == y:
        print("满足条件的数是:", num)

运行结果如下图所示:

题目 - 06

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总数为多少?

python 复制代码
month = int(input("请输入月份:"))
a, b = 1, 1
if month == 1 or month == 2:
    print(f"第{month}个月兔子总数为:1")
else:
    for i in range(3, month + 1):
        a, b = b, a + b
    print(f"第{month}个月兔子总数为:{b}")

运行结果如下图所示:

题目 - 07

将一个正整数分解质因数。例如,输入90,输出90=2*3*3*5。

python 复制代码
n = int(input("请输入一个正整数:"))
num = n
print(f"{num} =", end=" ")
i = 2
while i <= n:
    if n % i == 0:
        print(i, end="")
        n = n // i
        if n > 1:
            print(" * ", end="")
    else:
        i += 1

运行结果如下图所示:

题目 - 08

给你一个有符号整数x,输出将x中的数字部分反转后的结果。

python 复制代码
x = int(input("请输入一个整数:"))
rev_x = int(str(abs(x))[::-1])
if x < 0:
    rev_x = -rev_x
print("反转后的结果:", rev_x)

运行结果如下图所示:

题目 - 09

给你一个整数x,如果x是一个回文整数,打印true;否则打印false。

回文数是指正序(从左到有)和倒序(从右向左)读都是一样的数字。

python 复制代码
x = int(input("请输入一个整数:"))
if x < 0:
    print(False)
else:
    original = x
    reverse = 0
    while x > 0:
        last = x % 10
        reverse = reverse * 10 + last
        x = x // 10
    print(original == reverse)

运行结果如下图所示:

题目 - 10

闰年的判断

python 复制代码
year = int(input("请输入你要判断的年份:"))

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"您所输入的年份{year}是闰年")
else:
    print(f"您所输入的年份{year}不是闰年")

运行结果如下图所示:

题目 - 11

九九乘法表

python 复制代码
for i in range(1, 10):
    for j in range(1, i+1):
        print(f" {i} * {j} = {i*j}", end='\t')
    print('   ')

运行结果如下图所示:

题目 - 12

判断素数

python 复制代码
for i in range(2, 101):
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        print(f'{i}是素数')

运行结果如下图所示:

相关推荐
IAUTOMOBILE21 小时前
用Python批量处理Excel和CSV文件
jvm·数据库·python
威联通安全存储21 小时前
破除“重前端、轻底层”的数字幻象:如何夯实工业数据的物理底座
前端·python
梯度下降中21 小时前
LoRA原理精讲
人工智能·算法·机器学习
IronMurphy21 小时前
【算法三十一】46. 全排列
算法·leetcode·职场和发展
czlczl2002092521 小时前
力扣1911. 最大交替子序列和
算法·leetcode·动态规划
Amour恋空21 小时前
Java多线程
java·开发语言·python
小陈工21 小时前
2026年3月28日技术资讯洞察:5G-A边缘计算落地、低延迟AI推理革命与工业智造新范式
开发语言·人工智能·后端·python·5g·安全·边缘计算
靴子学长1 天前
Decoder only 架构下 - KV cache 的理解
pytorch·深度学习·算法·大模型·kv
智算菩萨1 天前
【OpenGL】10 完整游戏开发实战:基于OpenGL的2D/3D游戏框架、物理引擎集成与AI辅助编程指南
人工智能·python·游戏·3d·矩阵·pygame·opengl
寒秋花开曾相惜1 天前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法