用tim在python中显示字符串的位

2024-10-02 04:20:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python中按顺序显示给定字符串的位。我可以把它转换成二进制字符串,但不能用计时器枚举它。你知道吗

下面是一个基于我使用的代码的最小示例:

import sys
string = "a"
for char in string:
    mybyte = str(bin(ord(char))[2:].zfill(8)) // convert char to 8 char length string which are char's representation in binary
    for bit in mybyte:
        sys.stdout.write(bit)
        time.sleep(0.5)

    sys.stdout.write("\n")

这不会显示每一位间隔0.5秒,而是等到所有位(8 x 0.5=4秒)都被处理后才显示。你知道吗

然而,如果我在lop中放一个新行,我会得到一个及时正确的迭代,但是每一位之间都会有我不想要的新行。我猜我在这里做错了,比如没有很好的解决问题的方法,但我真的被困在这个问题上,所以任何建议都是欢迎的。你知道吗


Tags: 字符串代码in示例forstring顺序stdout
2条回答

您需要在每次写入之后sys.stdout.flush(),因为默认情况下标准输出是缓冲的

您可能需要刷新sys.stdout

import sys
string = "a"
for char in string:
    mybyte = str(bin(ord(char))[2:].zfill(8)) // convert char to 8 char length string which are char's representation in binary
    for bit in mybyte:
        sys.stdout.write(bit)
        sys.stdout.flush()  # <  Add this line right here
        time.sleep(0.5)

    sys.stdout.write("\n")

对于Python3,只需使用end关键字参数print()

import sys
string = "a"

for char in string:
    mybyte = str(bin(ord(char))[2:].zfill(8))

    for bit in mybyte:
        print(bit, end='')
        time.sleep(0.5)

    print()

对于Python 2,必须导入print函数:

 from __future__ import print_function

相关问题 更多 >

    热门问题