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

数值转换器开发求助:规则转换及输入校验问题

解决方案思路与代码实现

1. 输入合法性验证

首先要确保输入是纯数字,可直接用字符串的isdigit()方法判断——该方法会检查字符串是否全由数字组成(若仅允许正整数,此方法完全适用;若需支持负数,可额外判断首字符是否为负号且剩余部分为数字)。

2. 数字转换逻辑

无需复杂的if/elif/else嵌套,更高效简洁的方式是字符映射:

  • 定义一个字典,把每个需要转换的数字字符直接映射到目标字符;
  • 遍历输入字符串的每一位,通过字典快速取值完成转换。

完整代码示例

def number_converter(input_str):
    # 输入验证:非纯数字直接返回错误提示
    if not input_str.isdigit():
        return "错误:仅允许输入数值,请不要输入字母或其他非数字字符"
    
    # 定义转换规则映射
    conversion_map = {
        '1': '0', '3': '0', '5': '0', '7': '0', '9': '0',
        '2': '1', '4': '1', '6': '1', '8': '1'
    }
    
    # 遍历每个字符完成转换,拼接结果
    result = []
    for char in input_str:
        result.append(conversion_map[char])
    
    return ''.join(result)

# 测试用例
print(number_converter("2576"))  # 输出: 1001
print(number_converter("abc123"))  # 输出: 错误:仅允许输入数值,请不要输入字母或其他非数字字符

简化版实现(列表推导式)

如果想让代码更紧凑,可用列表推导式替代循环:

def number_converter(input_str):
    if not input_str.isdigit():
        return "错误:仅允许输入数值,请不要输入字母或其他非数字字符"
    
    conversion_map = {'1':'0','3':'0','5':'0','7':'0','9':'0','2':'1','4':'1','6':'1','8':'1'}
    return ''.join([conversion_map[char] for char in input_str])

关于你用if/elif/else失败的原因

大概率是你错误地判断了整个数字的奇偶,而非每一位数字的奇偶。比如直接把输入转成整数后判断整体奇偶,只能得到单个转换结果,而非每一位的对应值。正确的做法必须拆分输入的每一位字符,逐个进行判断或映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:05:18