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

CircuitPython:生成1到X无重复随机字符串列表的问题解决

问题分析与解决:CircuitPython生成无重复随机字符串列表

问题根源

你的代码存在类型不匹配的逻辑错误:生成的随机数r是整数类型,但列表songs中存储的是字符串类型。判断r not in songs时,整数与字符串永远不会相等,即使songs里已有对应数字的字符串(比如'17'),整数17仍会被判定为不在列表中,导致重复添加。

修正方案

提供两种可行的修正思路,均能生成1到X的无重复随机字符串列表:

方案1:先构建整数列表,最后统一转字符串

先以整数形式维护无重复列表,完成后一次性转为字符串类型,逻辑清晰且查找效率更高:

import random

station = 20

songs = []
while len(songs) < station:
    r = random.randint(1, station)
    if r not in songs:
        songs.append(r)
# 统一转换为字符串
songs = [str(num) for num in songs]

方案2:直接操作字符串类型

生成随机数后立即转为字符串,直接判断字符串是否在列表中,逻辑更贴合需求:

import random

station = 20

songs = []
while len(songs) < station:
    r_str = str(random.randint(1, station))
    if r_str not in songs:
        songs.append(r_str)

效果验证

修正后的代码会持续生成随机数,直到列表包含1到20的所有数字(无重复),最终输出为随机顺序的字符串列表,不会出现重复元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:34:59