def format_number(n): digits = str(n) # 将数字转换为字符串 length = len(digits) # 获取数字的位数 result = "" # 保存最终结果 # 根据位数逐个转换数字 for i in range(length): digit = int(digits[i]) # 获取当前位的数字 position = length - i - 1 # 当前位的位置 # 根据当前位的位置添加对应的字母 if position == 2: result += "B" * digit elif position == 1: result += "S" * digit elif position == 0: result += str(list(range(1, digit + 1))) return result # 输入测试用例 n = int(input()) # 输出结果 print(format_number(n)) 优化你的代码
时间: 2024-04-17 15:26:57 浏览: 155
当然,我们可以对代码进行一些优化。下面是优化后的代码示例:
```python
def format_number(n):
digits = str(n)[::-1] # 将数字转换为字符串并反转
length = len(digits) # 获取数字的位数
result = "" # 保存最终结果
# 根据位数逐个转换数字
for i in range(length):
digit = int(digits[i]) # 获取当前位的数字
position = i # 当前位的位置
# 根据当前位的位置添加对应的字母
if position == 2:
result += "B" * digit
elif position == 1:
result += "S" * digit
elif position == 0:
result += str(list(range(1, digit + 1)))[-1] # 直接获取个位数字
return result[::-1] # 反转结果字符串再返回
# 输入测试用例
n = int(input())
# 输出结果
print(format_number(n))
```
优化后的代码主要做了以下几点改进:
1. 将数字转换为字符串后进行反转,这样后续的位数判断和处理会更加方便。
2. 将当前位的位置 `position` 直接设置为循环变量 `i`,这样可以避免每次都计算 `length - i - 1`。
3. 在处理个位数字时,直接获取列表 `[1, 2, ..., digit]` 中的最后一个元素,避免了使用 `str()` 和 `list()` 的转换。
这样的优化可以提高代码的简洁性和效率。如果你有任何其他问题,请随时提问!
阅读全文