jupyter笔记本中的stdout.write()和input()

时间:2017-07-01 07:34:04

标签: python jupyter-notebook sys

我正在创建一个向您显示问题的脚本,您给出答案(“y”或“n”)并重新启动该行,并出现另一个问题。我试过这个(假设数字是问题)

import sys

for i in range (10):  
    sys.stdout.write('\r'+str(i))
    label = input()
    if label=='n':
        doSomething
    if label=='y':
        doSomethingElse 

但在这种情况下,我得到了这个

0n
1n
2y
3n

我希望如果我有

0

我给出了答案并按Enter键,当前行消失,新号码出现

1

然后我再回答一下,等等。

我已经检查了this个问题和this。我正在使用python 3.5。

修改 感谢答案,现在我知道我需要避免使用input()函数的'\ n'。

2 个答案:

答案 0 :(得分:0)

当您使用input()时,总会有一个'\ n'的输出。这个'\ n'更改为新行,然后'\ r'无法正常工作。

所以,也许你应该在这里突破(input())。

答案 1 :(得分:0)

也许\n赞成(见Part 1),您可以使用elif(请参阅Part 2

for i in range (10):  
    sys.stdout.write(str(i) + '\n') # Part 1
    label = input()
    if label == 'n':
        doSomething
    elif label =='y':  # Part 2
        doSomething