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

消息加密:添加随机字符功能的代码异常问题求助

消息加密功能的问题分析与修复

问题原因拆解

  1. 所有间隔都是同一个随机字符
    你的ranchar()函数逻辑错误:for循环第一次迭代就执行return ok,导致函数永远只返回单个随机字符。而str.join()会把这个字符作为统一分隔符插入所有字符之间,所以所有间隔都是同一个字符。

  2. 未去除空格
    代码完全没有处理输入中的空格,直接使用原始输入phrase,空格会被保留并参与后续拼接。

  3. 间隔长度固定为1
    一方面,ranchar()只返回单个字符,所以间隔长度固定是1;另一方面,函数仅被调用一次,生成的分隔符不会变化。此外,你生成的随机数y根本没发挥作用——因为循环第一次就return了,y的取值对结果毫无影响。


修复后的代码

import random
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

def generate_random_seq(length):
    # 生成指定长度的随机字符序列
    return ''.join(random.choice(chars) for _ in range(length))

# 处理输入:移除所有空格
phrase = input('请输入要加密的消息: ').replace(' ', '')
# 生成2到20之间的随机长度(包含2和20)
x = random.randint(2, 20)

# 拼接加密内容:每个字符后追加随机序列,最后移除末尾多余的序列
encrypted = []
for char in phrase:
    encrypted.append(char)
    encrypted.append(generate_random_seq(x))
encrypted = ''.join(encrypted[:-1])

print(encrypted)

修复说明

  • 新增generate_random_seq()函数,根据传入的长度生成对应长度的随机字符序列,避免仅返回单个字符
  • 用replace(' ', '')移除输入中的空格(若需过滤更多空白字符,可改用''.join(c for c in phrase if not c.isspace()))
  • 用random.randint(2,20)生成符合需求的随机长度x(包含2和20两个边界值)
  • 通过循环为每个字符添加独立的随机序列,最后移除末尾多余的序列,确保仅在字符之间插入间隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:46:23