小明用字母 A 对应数字 1, B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27, AB 对应 28, AZ 对应 52, LQ 对应 329。问2023对应的字符串
蓝桥杯的题目?
这个问题我回答过,可惜csdn没法检索
只不过当时我回答的是python如何生成流水号
其实是一回事
def alpha_generator():
current = "a"
while True:
yield current
if current[-1] == "z":
if current == "z" * len(current):
current = "a" * (len(current) + 1)
else:
l = len(current)
current = current.rstrip("z")
current = current[:-1] + chr(ord(current[-1]) + 1)
current = current + "a" * (l - len(current))
else:
current = current[:-1] + chr(ord(current[-1]) + 1)
gen = alpha_generator()
for i in range(2023):
print(i + 1, next(gen))
结果是BYU
这个应该是做一个26进制的转换,且做了一些微调
def t2(num):
a = num // 26
b = num % 26
res_lis = []
if b:
res_lis.append(chr(ord('A') + b - 1))
elif a != 0 and b == 0:
res_lis.append('Z')
a -= 1
if 0 < a < 26:
res_lis.append(chr(ord('A') + a - 1))
else:
while a > 26:
a1 = a // 26
b = a % 26
a = a1
res_lis.append(chr(ord('A') + b - 1))
res_lis = res_lis[::-1]
res = ''.join(res_lis)
print(a, b, res)
先看结果,可以自己输入:
# 2023年6月6日12:04:51
num_map = {1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'H',
9: 'I', 10: 'J', 11: 'K', 12: 'L', 13: 'M', 14: 'N', 15: 'O',
16: 'P', 17: 'Q', 18: 'R', 19: 'S', 20: 'T', 21: 'U', 22: 'V',
23: 'W', 24: 'X', 25: 'Y', 26: 'Z'}
def num_to_string(n):
if n <= 26:
return num_map[n]
elif n % 26 == 0:
return num_to_string(n//26-1) + 'Z'
else:
q, r = divmod(n-1, 26)
return num_to_string(q) + num_map[r+1]
def main():
n = int(input('请输入一个数字: '))
print(num_to_string(n))
if __name__ == '__main__':
main()
1.写一个获取字符串的方法:
```python
def number_to_string(number):
result = ""
while number > 0:
digit = (number - 1) % 26 # 计算当前位的数字
result = chr(ord('A') + digit) + result # 将字母添加到结果字符串的开头
number = (number - 1) // 26 # 向前进位
return result
2.调用
```python
number = 2023
result = number_to_string(number)
print(result)
已经标好注释,希望能帮到你,加油~~~