简单Python字符串编码/解码脚本问题

2024-09-28 22:21:30 发布

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

我正在学习Python,在我的家庭作业中,我编写了一个简单的脚本,从用户那里得到一个字符串,比如aaaabbcccdde,并将其转换为a4b4c3d2e1。 现在我决定让事情变得更有趣,并修改代码,以便实时连续输入和输出。所以我需要一个可能性,输入符号,并得到一个简单的算法编码输出

我遇到的唯一问题是需要不带'\n'的输出,因此所有编码符号都被打印在一个字符串中,例如:a4b4c3d2e1

但在这种情况下,输出符号与我的输入混合,最终脚本冻结。显然,我需要在一个字符串上输入符号,然后在另一个没有换行符的字符串上输出

那么,你能告诉我,对于新手来说,有没有可能不费吹灰之力就编出这样的代码:

这里是shell中的字符串,我总是在其中添加符号

a4b4c3d2e1a4b4c3d2e1a4b4c3d2e1-#在下一个字符串上,脚本连续输出编码结果而不中断行

import getch

cnt = 1

print('Enter any string:')

user1 = getch.getch()

while True:
    buf = getch.getch()
    if buf == user1:
       cnt += 1
       user1 = buf
    else:
       print(user1, cnt, sep='')
       user1 = buf
       cnt = 1

所以这个片段给我的输出是这样的:

a4级

s4级

d4级

f4层

等等

在任何情况下,当我试图将end=''添加到output print()时,程序都会卡住

有什么办法可以解决这个问题? 谢谢


Tags: 字符串代码用户脚本编码符号情况print
1条回答
网友
1楼 · 发布于 2024-09-28 22:21:30

我真的不知道细节,但我可以说:当您添加end=''时,程序不会冻结,但输出(stdout)不会刷新(可能是由于某些优化?我真的不知道)

因此,您要做的是在打印后立即刷新输出

print(user1, cnt, sep='', end='')
sys.stdout.flush()

(它实际上是How to flush output of print function?的副本)

相关问题 更多 >