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

自定义Python哈希函数运行无输出,寻求解决方案

问题原因
  • 类型不匹配:keystring里的元素是整数类型的1,但代码里判断的是字符串类型的"1"("1".lower()结果还是字符串"1"),两者不属于同一类型,所以"1".lower() in keystring永远为False,while循环根本不会执行,自然没有输出。
  • 潜在死循环问题:就算类型匹配,当前代码也会陷入死循环——找到第一个1后没有从keystring中移除它,每次循环都会重复处理同一个1,无法终止。
解决办法

修复类型匹配+解决死循环的完整代码

keystring = [1, 4, 2, 3, 2, 1, 4, 1]

bucket1 = []
bucket2 = []
bucket3 = []
bucket4 = []

while 1 in keystring:
    idx = keystring.index(1)
    # 防止最后一个元素是1时索引越界
    if idx + 1 < len(keystring):
        bucket1.append(keystring[idx + 1])
        print(bucket1)
    # 移除已处理的1,避免重复循环
    keystring.pop(idx)

关键修改说明

  • 把判断条件里的字符串"1"改成整数1,匹配列表中元素的实际类型。
  • 每次处理完目标元素后,用pop(idx)移除已处理的1,确保循环能正常推进。
  • 增加索引越界判断,避免列表最后一个元素是1时,idx+1超出列表范围导致报错。

进阶优化(可选)

如果需要处理更多bucket,用字典管理会更简洁:

keystring = [1, 4, 2, 3, 2, 1, 4, 1]
buckets = {1:[], 2:[], 3:[], 4:[]}

while 1 in keystring:
    idx = keystring.index(1)
    if idx + 1 < len(keystring):
        target_num = keystring[idx + 1]
        if target_num in buckets:
            buckets[target_num].append(target_num)
            print(buckets[1])
    keystring.pop(idx)

内容的提问来源于stack exchange,提问作者original hacker name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:15:46