如何在用户输入后阻止Python插入新行?

时间:2017-06-21 05:07:09

标签: python input ipython newline spyder

Python在true函数的每次调用之间在控制台输出中插入一个空行但我不希望这样(即我希望if (IsPostBack) { try { using (OleDbCommand com = new OleDbCommand("select childName from family where childID='" + tb_acc.Text + "'", con)) { con.Open(); OleDbDataReader myReader2 = null; myReader2 = com.ExecuteReader(); while (myReader2.Read()) { if (myReader2["childName"] != DBNull.Value) { Label1.Text = (myReader2["childName"].ToString()); //user full Name } else { Label1.Text = "User not found."; } } } } catch (Exception ex) { Response.Write("Error: " + ex.ToString()); } finally { con.Close(); } } 提示在控制台中的连续行上由空白行分隔)。有没有办法做到这一点?我尝试使用input()认为它可能像input()函数一样工作,但事实并非如此......

代码:

input("foo", end="")

输出:

print()

期望的输出:

fname = input("Please enter your first name: ")
lname = input("Please enter your last name: ")
print("Pleased to meet you, " + str(fname) + " " + str(lname) + "!")

编辑:

正如其他人在评论部分指出的那样,这个问题是不可重现的,即使对我来说也是如此,除非在Spyder IDE中使用IPython接口。如果有人在Spyder之外运行IPython,请运行上面的代码并告诉我是否产生相同的输出。我可以通过Spyder的IPython接口重现不需要的输出,但不能通过终端会话重现,所以这是IPython或Spyder特有的。

3 个答案:

答案 0 :(得分:1)

也许不完全是你所追求的,但它应该可以解决你的问题。

使用以下命令删除控制台中的上一行:

def delete_previous_line():
    CURSOR_UP_ONE = '\x1b[1A'
    ERASE_LINE = '\x1b[2K'
    print(CURSOR_UP_ONE + ERASE_LINE + CURSOR_UP_ONE)


fname = input("Please enter your first name: ")
delete_previous_line()
lname = input("Please enter your last name: ")
print("Pleased to meet you, " + str(fname) + " " + str(lname) + "!")

请参阅remote last STDOUT

如果它不起作用,请尝试

print(CURSOR_UP_ONE + ERASE_LINE)

而不是

print(CURSOR_UP_ONE + ERASE_LINE + CURSOR_UP_ONE)

答案 1 :(得分:1)

Spyder开发人员)这看起来像是我们的IPython控制台中的一个小错误。请在此处报告:

https://github.com/jupyter/qtconsole

注意:这个控制台不仅仅是在Spyder中嵌入终端IPython会话(这就是为什么对它进行比较毫无意义)。

相反,它是大多数终端行为的重新实现,但使用图形工具包(称为Qt)和Jupyter内核/前端架构。

答案 2 :(得分:-1)

Window Vista控制台中没有多余的空行。

当选择“在当前控制台中执行”时,Spyder会插入额外的空行。

如果程序在“专用控制台”中执行,则不会插入这些额外的行。 (Python 3.6,Spyder 3.2.3,IPython 5.3.0)

Spyder - >运行 - >每个文件的配置... - >在专用控制台中执行

(2017年10月16日,MS Windows Vista 32位上的32位Anaconda。)