簡體   English   中英

如何讓我的 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

我不確定這是否是作業項目/問題,但如果不是,我想您可以使用random.sample它們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不會被換行符分隔,這是默認行為。 此外,在這里使用for而不是whilerange迭代器是有意義的。

注意:我冒昧地將睡眠時間減少了一半,因此更容易測試。

import random
import time

All = "abcdefghijklmnopqrstuvwxyz1234567890"

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM