You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将输入栈的整数转换为大写字母列表?

问题描述

我目前正在学习Python,在完成以下任务时遇到困难:需要将整数输入栈中并转换为大写字母。我尝试了下述代码的几种变体,但目前仅能得到单个字母A,无法生成完整字母表。以下是我目前的代码:

stack = chr(1)
size = len(stack)
top = -1

def push(x):
  global top
  if top >= size - 1: print("Stack Overflow")
  else:
    top = top + 1
    stack[top] = x

def pop():
  global top
  if top == -1: print("Stack Underflow")
  else:
    old_value = stack[top]
    top = top - 1
    stack[top + 1] = 0
    return old_value

print(stack)
问题分析
  • stack初始化为chr(1),这是一个单个字符,Python中字符串是不可变类型,无法通过stack[top] = x修改字符,运行时会直接抛出错误。
  • size被设为len(stack)也就是1,栈的容量仅为1,只能存入一个元素,所以只能得到单个字母。
  • 缺少整数到大写字母的转换逻辑:大写字母A-Z对应的ASCII码范围是65-90,需要把输入的整数映射到这个区间(比如输入1对应A,输入2对应B,以此类推)。
修正后的代码

用列表实现栈(列表是可变类型,支持元素修改和动态添加),同时补充整数转大写字母的逻辑,示例代码如下:

# 初始化栈,设置容量为26(对应A-Z共26个大写字母)
stack = []
size = 26
top = -1

def push(x):
    global top
    if top >= size - 1:
        print("Stack Overflow")
    else:
        # 将整数转换为对应大写字母:A的ASCII码是65,所以x=1对应chr(64+1)=A
        char = chr(64 + x)
        top += 1
        stack.append(char)

def pop():
    global top
    if top == -1:
        print("Stack Underflow")
        return None
    else:
        old_value = stack[top]
        top -= 1
        return old_value

# 测试:将1-26依次入栈,对应生成A-Z
for num in range(1, 27):
    push(num)

# 输出栈内的完整字母表
print("栈内的大写字母:", stack)

# 测试出栈操作
print("弹出栈顶元素:", pop())
代码说明
  • 用列表stack实现栈,既支持动态添加元素,也能方便地访问栈顶元素。
  • push函数中通过chr(64 + x)完成整数到大写字母的转换,确保输入1-26时对应生成A-Z。
  • 通过循环将1-26入栈,即可得到完整的大写字母表。

内容的提问来源于stack exchange,提问作者Sheri Milan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 06:54:54