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

如何解决二进制学习程序中随机整数重复出题的问题

问题排查:二进制训练程序重复出题的原因及修复

核心问题分析

你程序里重复出题的根源在于判断逻辑和存储内容的类型不匹配:

  • 用random.randint(0,15)生成的是整数类型的十进制数字(比如5)
  • 但调用conversion(binaire[number])得到的是字符串类型的数字(比如"5"),并将这个字符串存入binaire_deja_fait列表
  • 检查重复时,用整数number去字符串列表里查找,自然找不到已存在的项,导致重复生成同一个数字

修复方案

保持判断和存储的类型一致即可,两种简单修复方式:

方式一:直接存储整数

无需调用conversion函数,直接把生成的整数number添加到已完成列表:

# 替换原代码中add=conversion(...)和append的两行
binaire_deja_fait.append(number)

方式二:检查时统一为字符串类型

如果一定要存储字符串,就在检查重复时把整数number转为字符串:

# 修改existe函数的调用行
test = existe(binaire_deja_fait, str(number))

可选优化建议

你的代码可以进一步简化,提升效率和可读性:

  • 用字典替代冗长的conversion函数:bin_to_dec = {"0000": "0", "0001": "1", ..., "1111": "15"},直接通过键值对映射
  • 用random.shuffle打乱数字列表,避免循环生成随机数的低效写法:
def apprendre_binaire():
    numbers = list(range(16))
    random.shuffle(numbers)
    binaire = ["0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"]
    print("Début du programme d'entrainement\n")
    for number in numbers:
        print("Convertir", number, "en binaire :\n")
        answer = input()
        if answer == binaire[number]:
            print("Juste\n")
        else:
            print("Faux, seconde chance :\n")
            answer = input()
            if answer == binaire[number]:
                print("Juste\n")
            else:
                print("Faux, la bonne réponse était", binaire[number], "\n")
    print("Fin du programme d'entrainement")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:40:38