我正在学习Python,为了写作业,我编写了一个简单的脚本,该脚本从这样的用户那里获取一个字符串:aaaabbbbcccdde并将其转换为a4b4c3d2e1。 现在,我决定让事情变得更有趣,并修改代码以实时进行连续的输入和输出。因此,我需要输入符号并获得使用该简单算法编码的输出。
我遇到的唯一问题是我需要输出不带'\ n'的内容,因此所有编码符号都被打印在一个字符串中,例如:a4b4c3d2e1
但是在那种情况下,输出符号与我的输入混合在一起,最终脚本冻结了。显然,我需要在一个字符串上输入Enter并在没有换行符的情况下将其输入到另一个字符串上。
所以,请您告诉我,新手编写代码可以做到以下事情没有很多困难吗?
a-#这里我总是在外壳中添加任何符号的字符串
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 =''以输出print()时,程序都会粘住。
有什么办法可以摆脱呢? 谢谢!
答案 0 :(得分:0)
我真的不知道细节,但是我可以说:添加end=''
时,程序不会冻结,但是输出(stdout
)不会刷新(可能是由于一些优化?我真的不知道)。
因此,您要做的是在打印输出后立即刷新输出。
print(user1, cnt, sep='', end='')
sys.stdout.flush()