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

Python如何使用ord函数获取对应整数?返回-63的代码如何修正

问题原因分析
  • 你当前的getEquivalentNumber逻辑仅对纯英文小写/大写字母有效,核心是默认ord(_Mychar.lower())的返回值在97(对应a)到122(对应z)区间,减去96后刚好得到1~26的对应值
  • 出现返回-63的情况,说明你输入的字符不是英文字母:ord(_Mychar.lower())的结果是33,对应英文感叹号!,33-96=-63,完全符合你遇到的输出结果
  • 除此之外,输入数字、空格、中文、全角字符、特殊符号都会出现不符合预期的返回值
优化方案

方案1:给字符转换函数加校验,非字母字符直接抛出明确提示

print('*' * 50)
user_input = input('请输入一个单词:\n-->')
print('*' * 50)

def getEquivalentNumber(_Mychar):
    _Mychar = _Mychar.lower()
    # 新增字母校验逻辑
    if not _Mychar.isalpha():
        raise ValueError(f"输入字符'{_Mychar}'不是英文字母,请重新输入纯字母内容")
    equivalentNumber = ord(_Mychar) - 96
    return equivalentNumber

def computeSumOfCharacters(myWord):
    sum = 0
    for i in myWord:
        sum += getEquivalentNumber(i)
    return sum

print(computeSumOfCharacters(user_input))

方案2:自动过滤非字母字符,不中断程序运行

如果不需要严格校验,可直接跳过非字母字符计算:

print('*' * 50)
user_input = input('请输入一个单词:\n-->')
print('*' * 50)

def getEquivalentNumber(_Mychar):
    _Mychar = _Mychar.lower()
    if not _Mychar.isalpha():
        return 0 # 非字母字符返回0,不影响累加结果
    equivalentNumber = ord(_Mychar) - 96
    return equivalentNumber

def computeSumOfCharacters(myWord):
    sum = 0
    for i in myWord:
        sum += getEquivalentNumber(i)
    return sum

print(computeSumOfCharacters(user_input))

方案3:输入阶段直接校验,要求用户必须输入纯字母内容

print('*' * 50)
while True:
    user_input = input('请输入一个纯英文单词:\n-->')
    if user_input.isalpha():
        break
    print("输入包含非英文字母,请重新输入")
print('*' * 50)

def getEquivalentNumber(_Mychar):
    _Mychar = _Mychar.lower()
    equivalentNumber = ord(_Mychar) - 96
    return equivalentNumber

def computeSumOfCharacters(myWord):
    sum = 0
    for i in myWord:
        sum += getEquivalentNumber(i)
    return sum

print(computeSumOfCharacters(user_input))

以上方案输入小写/大写字母a时,getEquivalentNumber都会返回预期的1。

内容的提问来源于stack exchange,提问作者The Austinator

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:57:01