print()仅每隔第二个输入打印一次

时间:2018-11-19 10:45:29

标签: python input

我是python的新手,当我需要过滤除常规字母以外的所有内容的输入时,我一直在尝试创建一个小的函数来调用。
我已经在部分代码中使用了SO,但是我似乎无法理解为什么它只能在第二次尝试中打印。
这是我的代码:

import re
i=1

def inputFilterText():
    inputRaw = input('input: ')
    inputFiltered = re.sub('[^a-zA-Z]+', '', inputRaw)
    return inputFiltered

while i > 0:
    inputFilterText()
    print(inputFilterText())

这是我的输出:

output

我不太确定发生了什么,但是我认为这是一个逻辑错误。我才刚刚开始使用Python,所以对您的帮助表示赞赏。

PS
“ while”仅存在,因此更易于测试,可以省略。

3 个答案:

答案 0 :(得分:2)

您两次调用inputFilterText。一次在print()中,一次之前。这导致代码在打印第二个响应之前提示输入两次。

答案 1 :(得分:1)

问题是您两次调用inputFilterText函数。第一次丢弃输出。导致输入需要两次,但只能显示一次结果。

要解决此问题,请删除inputFilterText()行。工作代码示例。

import re
i=1

def inputFilterText():
    inputRaw = input("input: ")
    inputFiltered = re.sub(""[^a-zA-Z]+, "", inputRaw)
    return inputFiltered

while i > 0:
    print(inputFilterText())

此外,将来请以原始文本而不是屏幕截图的形式发送代码。

答案 2 :(得分:1)

可能我建议在这里使用一个变量,您不会对第一个过滤器调用做任何事情(这就是为什么它第一次询问),而第二个过滤器调用您只是在打印。

ERROR 1932 (42S02): Table 'my_db.my_table' doesn't exist in engine