如何让我的 Print Statement 只打印一行?

How do I make my Print Statement print on only one line?

在这个程序中,我试图将我的代码打印为“这里的随机字母”而不是“r”“a”“n”“d”“o”“m "等

import random
import time

All = "abcdefghijklmnopqrstuvwxyz1234567890"
i = 0

while i < 6:
    time.sleep(1)
    print(All[random.randint(1,35)])
    i += 1

给你!

import random
import time

All = "abcdefghijklmnopqrstuvwxyz1234567890"
i = 0
s = ""
while i < 6:
    time.sleep(1)
    s += All[random.randint(1,35)]
    i += 1

print(s)

每个打印语句都以换行符结尾,因此您需要首先“构建”字符串(在本例中为 s),然后打印一次。

试试这个。

import random
import time
import sys

All = "abcdefghijklmnopqrstuvwxyz1234567890"
i = 0
someString = ""
while i < 6:
    time.sleep(1)
    print()
    sys.stdout.write("\r "+str(All[random.randint(1,35)]))
    sys.stdout.flush()
    i += 1

我不确定这是否是家庭作业 project/question 但如果不是,我猜你可以使用 random.sample 将它们弄乱(我将不包含 sleep 因为似乎没有必要也没有解释它的推理):

from random import sample

s = "abcdefghijklmnopqrstuvwxyz1234567890"
print(*sample(s, k=len(s)), sep='')

示例结果:

urftloqb38swz1ma9x5yg4p2ceijdhnk07v6

另外仅供参考,您使用的字符串可以使用字符串库实用地制作:

>>> import string
>>> string.ascii_lowercase + string.digits
abcdefghijklmnopqrstuvwxyz0123456789

它确实在 1 之前有 0 而不是在末尾,但考虑到您正在做的事情,它应该不会产生任何有意义的差异。

您可以将 end='' 传递给 print 语句,这样后续的 print 就不会被换行符分隔,这是默认行为。此外,在这里使用 range 迭代器与 for 而不是 while.

是有意义的

Note: I've taken the liberty to cut the sleep time in half, so it's easier to test it out.

import random
import time

All = "abcdefghijklmnopqrstuvwxyz1234567890"

for _ in range(6):
    time.sleep(0.5)
    print(All[random.randint(1, 35)], end='')