Python编程实战:12道趣味算法题
·
题目 - 01
输入任意一个正整数,求出它是几位数。
num = input("请输入一个正整数:") if int(num) > 0: digit_count = len(num) print(f"你输入的数字 {num} 是 {digit_count} 位数") else: print("输入错误!请输入**大于0**的正整数\n")运行结果如下图所示:
题目 - 02
求两个数的最大公约数和最小公倍数
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和它本身以外不能被其他正整数整除。
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,就提示“猜小了”;
- 如果两者相等,就提示“恭喜你中奖了”。
- 只要没中奖,就需要一直猜下去。
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又是一个完全平方数,请问该数是多少?(能表示为某个整数的平方的数成为完全平方数。)
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个月后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总数为多少?
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。
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中的数字部分反转后的结果。
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。
回文数是指正序(从左到有)和倒序(从右向左)读都是一样的数字。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
闰年的判断
year = int(input("请输入你要判断的年份:")) if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): print(f"您所输入的年份{year}是闰年") else: print(f"您所输入的年份{year}不是闰年")运行结果如下图所示:
题目 - 11
九九乘法表
for i in range(1, 10): for j in range(1, i+1): print(f" {i} * {j} = {i*j}", end='\t') print(' ')运行结果如下图所示:
题目 - 12
判断素数
for i in range(2, 101): for j in range(2, i): if i % j == 0: break else: print(f'{i}是素数')运行结果如下图所示:
更多推荐














所有评论(0)