4. 数位分解技巧
利用整除(//)和取余(%)运算符可以提取一个整数的各个数位:
| 运算 | 含义 | 示例(num=123) |
|---|---|---|
num % 10 | 取个位 | 3 |
num // 10 | 去掉个位 | 12 |
num // 10 % 10 | 取十位 | 2 |
num // 100 | 取百位 | 1 |
两位数翻转
python
# 将两位数的数位分解,并翻转此数。输入12,输出21
num = int(input("请输入一个两位的整数:"))
s = num // 10 # 十位
g = num % 10 # 个位
r_num = g * 10 + s
print("翻转后的数为:", r_num)
📝 样例输入:
输入
12
▶ 运行结果:
输出
请输入一个两位的整数:12
翻转后的数为: 21
三位数各位数字求和
python
# 读取一个0到999之间的整数,计算它各位数字之和
num = int(input())
a = num % 10 # 个位
num //= 10
b = num % 10 # 十位
num //= 10
c = num % 10 # 百位
print(f"各位数字之和是:{a + b + c}")
📝 样例输入:
输入
123
▶ 运行结果:
输出
123
各位数字之和是:6
时间转换
把总秒数分解为"时:分:秒",是数位分解思路的实际应用:
python
# 输入一个时间(h时m分s秒),计算经过n秒后的时间
h = int(input("时"))
m = int(input("分"))
s = int(input("秒"))
n = int(input("经过的时间(秒)"))
t = h * 3600 + m * 60 + s + n # 转换为总秒数
new_h = t // 3600
new_m = (t % 3600) // 60
new_s = t % 60
print(f"{new_h}时")
print(f"{new_m}分")
print(f"{new_s}秒")
📝 样例输入:
输入
1
30
45
80
▶ 运行结果:
输出
时1
分30
秒45
经过的时间(秒)80
1时
32分
5秒