【问题标题】:Random letter generator not working随机字母生成器不工作
【发布时间】:2014-03-31 00:28:02
【问题描述】:

我无法弄清楚如何编写一个脚本,该脚本基本上将一堆随机字母保存到 不同 行的 .txt 文件中。我现在拥有的是:

import random
f = open("test.txt", "w") #clears current test.txt file
f.close()
f = open("test.txt", "a")
b = 0
def randomstring():
    global c
    valid_letters='abcdefghijklmnopqrstuvwxyz'
    c = ''.join(random.choice(valid_letters))
    

while b < 10000:
    randomstring()
    f.write(c + "/n")
    b = b + 1

f.close

这个输出是什么

q/ne/ny/nt/nb/ng/nf/no/nu/ni/nr/nn/nh/nu/nr/ne/nx/nw/nr/nt/ns/nw/nk/nz /no/nb/nk/nh/nx/nj/nw/nu/no/nl/nv/nm/ni/nh/nd/nh/ng/nk/np/nd/na/no/nx/nn/ng /nb/np/nh/nb/nx/nj/nj/ne/nr/nb/nu/nr/nh/nj/nf/nw/ns/nl/np/nc/ne/nh/np/nu/nc /nw/nd/nt/nt/na/nk/np/nc/nm/nt/nt/nb/nw/nf/nf/nf/na/ni/n

我希望它输出的是

q

e

是的

t

等。谢谢

【问题讨论】:

  • 如果我的回答有帮助,您介意接受吗?谢谢

标签: python python-3.x random


【解决方案1】:

您正在错误地转义它。转义如下:\n不是/n 转义是用反斜杠而不是正斜杠来完成的。

如下:

while b < 10000:
    randomstring()
    f.write(c + "\n")
    b = b + 1
f.close

q
e
y
t

另外,既然每次写入文件时都会清除文件,为什么不直接以'w' 的身份打开并写入文件。这有效地覆盖了文件,因此它会清除它并写入它。

【讨论】:

  • 根据预期的输出目标,通过os.linesep 使用 OS EOL 标记通常更灵活。
【解决方案2】:

这是一个清理后的版本:

# Assumes Python 3.x;
#  for Python 2.x, range should be replaced with xrange
from random import choice
from string import ascii_lowercase

OUTPUT = "test.txt"
NUM_WORDS = 10000
WORD_LENGTH = 1

def random_word(length, alphabet=ascii_lowercase):
    return ''.join(choice(alphabet) for i in range(length))

def main():
    with open(OUTPUT, "w") as outf:
        for i in range(NUM_WORDS):
            word = random_word(WORD_LENGTH)
            outf.write(word + "\n")

if __name__=="__main__":
    main()

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多