【问题标题】:How do you pad a string to a length = n with consecutivley randomly generated characters?如何使用连续随机生成的字符将字符串填充到长度 = n?
【发布时间】:2021-09-23 22:00:05
【问题描述】:

我正在尝试获取用户输入的字符串,该字符串不能超过用户的 70 个字符,但是一旦填充,总字符串的长度将是 100 个字符。

但是,我必须使用随机生成的字母来弥补字符串的其余 100 个字符。我遇到的问题是我正在生成相同的单数字符,然后填充它以满足 100 个字符的限制。如何使字符串包含随机字符?

我想要的示例:

用户输入:ABC

所需的输出:ABCJ4RLKDIJHSJRLWOINGHZXNROQUTJHLOUHFPSNDUVMFHTQAQ 等最多 100 个字符。

我得到的是以下内容:

用户输入:ABC

输出:ABCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT 等最多 100 个字符。

这是我的代码:

text = input("Enter your string: ")
if len(text) > 70: exit("Char limit cannot exceed 70")

print(text.ljust(100, random.choice(string.ascii_letters)))

【问题讨论】:

  • 简单的方法可以是一个while循环,它检查是否还没有达到最终的字符串长度,并且在循环中只添加一个随机字符。
  • 你能想出一条规则来告诉你需要多少随机字符吗?你能想出一种方法来生成那么多字符并将它们连接起来吗?当您尝试编写代码来解决问题时发生了什么?
  • 您只需要大写字母吗?如果是这样,你应该从string.ascii_uppercase中随机选择。

标签: python python-3.x string random char


【解决方案1】:

好吧,ljust 不是您想要的工具,它需要一个 单个 字符并用它填充。

这真的不难实现:从你想要的长度中减去你拥有的长度,生成许多随机字符,并将它们附加到字符串中。

这确实是一个 Python 的基本练习,如果对如何执行这些步骤有任何疑问,建议您多花一点时间阅读 python.org 的官方介绍。不像今天学习如何编写循环代码不会保证你的时间。

【讨论】:

    【解决方案2】:

    您可以在循环中添加该随机函数以获得所需的输出,并且 enzo 的回答是准确的

    我以我知道简单方式编辑了您的代码,但您可以根据自己的意愿进行编辑。

    import string
    import random
    a = ""
    while True:
        text = input("Enter your string: ")
        if len(text) > 70: 
            print("Char limit cannot exceed 70")
            continue
        else:
            for i in range (100 - len(text)):
                a += (random.choice(string.ascii_letters))
                
            break
    print(text + a)
    

    我希望这是有用的:)

    【讨论】:

    • 我很欣赏这一点,从我的背景来看似乎比 enzo 更合乎逻辑,但两者都完成了工作,我感谢你们的回答!
    【解决方案3】:

    这是一次非常棒的尝试!你很接近,但你可以只使用字符串连接而不是ljustas Marcus Müller explained

    import random
    import string
    
    text = input("Enter your string: ")
    size = len(text)
    if size > 70: 
        exit("Char limit cannot exceed 70")
    
    # Append to the end of `text` with `100 - size` (the remaining) random chars
    result = text + ''.join(random.choice(string.ascii_letters) for _ in range(100 - size))
    
    assert len(result) == 100
    assert result.startswith(text)
    print(result)
    

    【讨论】:

    • 这里可以使用random.choicesresult = text + ''.join(random.choices(string.ascii_letters, k=100-size)
    • 这不允许重复。
    • sample 不允许重复,choices 允许。
    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 2015-01-16
    • 2021-03-15
    • 2012-11-08
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多