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}是素数')

运行结果如下图所示:

相关推荐
u01091476010 小时前
CSS组件库如何快速扩展_通过Sass @extend继承基础布局
jvm·数据库·python
baidu_3409988210 小时前
Golang怎么用go-noescape优化性能_Golang如何使用编译器指令控制逃逸分析行为【进阶】
jvm·数据库·python
m0_6784854510 小时前
如何利用虚拟 DOM 实现无痕刷新?基于 VNode 对比的状态保持技巧
jvm·数据库·python
qq_3422958210 小时前
CSS如何实现透明背景效果_通过RGBA色彩模式控制透明度
jvm·数据库·python
TechWayfarer10 小时前
知乎/微博的IP属地显示为什么偶尔错误?用IP归属地查询平台自检工具3步验证
网络·python·网络协议·tcp/ip·网络安全
xiaotao13110 小时前
02-机器学习基础: 监督学习——线性回归
学习·机器学习·线性回归
Greyson110 小时前
CSS如何处理超长文本换行问题_结合word-wrap属性
jvm·数据库·python
justjinji10 小时前
如何批量更新SQL数据表_使用UPDATE JOIN语法提升效率
jvm·数据库·python
小江的记录本10 小时前
【网络安全】《网络安全常见攻击与防御》(附:《六大攻击核心特性横向对比表》)
java·网络·人工智能·后端·python·安全·web安全
贵沫末10 小时前
python——打包自己的库并安装
开发语言·windows·python