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

如何隐藏raw_input中用户的输入内容?附Python代码需求

实现输入隐藏+自定义编码存储的Python程序

嘿,我完全懂你想要做的事——打造一个26字符密码的编码工具,用户输入时看不到明文,按下回车后才展示编码后的内容,还要把这些编码结果写入文本文件对吧?我来给你一步步搞定这个需求。

首先,你原来的代码用raw_input获取输入,默认是明文显示的,要实现输入隐藏,Python标准库的getpass模块刚好能解决这个问题,它的getpass函数会在用户输入时完全隐藏内容(连星号都不会显示)。

然后是编码部分,你提到要生成a = 2、c = 6这种格式,我给你两种实用方案:一种是按字母在字母表的位置自动生成编码,另一种是完全自定义映射规则(按你想要的对应关系来)。

完整代码示例(自动按字母位置编码)

import getpass

try:
    # 获取隐藏的用户输入,自动转成小写
    user_input = getpass.getpass("请输入26字符密码语句: ").lower()
    if not user_input.strip():
        print("输入不能为空哦!")
        exit()

    # 生成编码内容:a对应1,b对应2,以此类推(如果要a=2,把+1改成+2就行)
    encoded_lines = []
    for char in user_input:
        if char.isalpha():
            # 计算字母在字母表的位置
            char_position = ord(char) - ord('a') + 1
            encoded_lines.append(f"{char} = {char_position}")
        # 如果需要处理非字母字符,可以在这里加逻辑,比如跳过或者自定义编码

    # 获取文件名并拼接后缀
    file_name = raw_input("请输入文件名: ")
    full_file_path = f"{file_name}.txt"

    # 用with语句写入文件,自动关闭,更安全
    with open(full_file_path, 'a') as file_handler:
        file_handler.write('\n'.join(encoded_lines) + '\n')

    # 回车后展示编码后的内容
    print("\n编码完成!内容如下:")
    print('\n'.join(encoded_lines))

except IOError as e:
    print(f"写入文件失败啦: {e}")
except Exception as e:
    print(f"哎呀,出了点小问题: {e}")

如果需要自定义编码映射(比如a=2、c=6这种特定规则)

把上面的编码部分改成下面这样就行,你可以自己补充所有字符的映射关系:

# 自定义编码映射表,你可以随意修改对应关系
custom_code_map = {
    'a': 2,
    'b': 3,
    'c': 6,
    # 继续补充d-z的映射...
}

encoded_lines = []
for char in user_input:
    if char in custom_code_map:
        encoded_lines.append(f"{char} = {custom_code_map[char]}")
    # 对于不在映射里的字符,你可以选择跳过或者提示用户

关键要点说明

  • 输入隐藏:getpass.getpass()是核心,它会在用户输入时不显示任何内容,完美符合你“按下回车前隐藏输入”的需求。
  • 文件安全写入:用with语句管理文件,不用手动调用close(),能避免忘记关闭文件导致的资源泄漏问题。
  • 异常处理:捕获了文件写入的错误和其他未知错误,让程序不会轻易崩溃,还能给出友好的提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:39:22