PAT09:数字黑洞
9.数字黑洞
题目
题目描述
1 |
|
输入描述:
1 |
|
输出描述:
1 |
|
输入例子:
1 |
|
输出例子:
1 |
|
题解
输入与处理
首先,要考虑输入的读取,使用
input
方法读取的是字符串类型。如果不满4位,需要使用字符串的zfill
方法进行补齐。字符串排序
使用
sort
方法对4位字符串进行排序,默认是非递减。使用参数reverse=True
,得到非递增。差值计算
将排序后的字符串使用
int
转换为整数,相减得到结果。格式化输出
根据题目的格式进行输出,再利用递归,将输出作为下一步的输入再判断。
边界条件
如果输入字符串的4位数字均相等,则做特殊输出:’N - N = 0000’。
如果输入为目标字符串6147,则终止递归。(特殊情况,如果第一次输入是6147需计算一次)
1 |
|
知识点
输入的读取
1、input()方法:读取一行输入,返回的是字符串类型,去掉了换行符。
2、sys.stdin文件对象(不会自动转换类型、包含换行符):
- read()方法:读取所有输入
- readline()方法:读取一行输入
字符串补齐
1、zfill()方法(使用0填充):
1
2
3
s = "42"
s = s.zfill(4)
print(s) # 00422、 rjust()方法(可指定字符填充):
1
2
3
s = "42"
s = s.rjust(4, "2")
print(s)3、使用 f-string方法:
1
2
3
s = "42"
s = f"{int(s):04d}" # 04d 表示至少 4 位,不足的地方用零填充
print(s)可以填充的为0和空格。04中的0表示填充字符,4表示填充到哪个宽度。
还可以选择填充后的对齐:
1
2
3
f"{5:<4d}" # 左对齐
f"{5:>4d}" # 右对齐
f"{5:^4d}" # 居中对齐常见的类型转换符:
- **
d
**:整数(decimal)- **
f
**:浮动小数点数- **
s
**:字符串- **
x
**:十六进制整数(小写)- **
X
**:十六进制整数(大写)- **
e
**:科学计数法表示的浮动小数