Python - 将输入(提示)传递给Function

时间:2015-05-16 12:25:53

标签: python input prompt

我正在尝试创建一个接收用户输入的函数,重新提示直到输入一个字符。 Strip()用于删除空格,因此只计算字符数。

这是我目前的代码:

def inputSomething(prompt, errorMessage = 'Atleast one character must be used'):
while True:
   value = (prompt)
   Response = value.strip()
   if len(Response) >=1:
      print ('Valid')           

   else:
      print(errorMessage)
      continue

inputSomething(input('Enter str: '))

我遇到的问题是循环。现在它无限循环结果。我不应该使用if else吗?

3 个答案:

答案 0 :(得分:1)

问题是input在循环之外:

import sys

def inputSomething(prompt, errorMessage = 'Atleast one character must be used'):
        while True:
            value = input(prompt)
            Response = value.strip()
            if Response:
                print ('Valid')           
                return Response   
            else:
                print(errorMessage, file=sys.stderr)


something = inputSomething('Enter str: ')

请注意,空字符串等于False

我对递归很困惑,因为你的问题中使用了缩进。

答案 1 :(得分:1)

变化:

inputSomething(input('Enter str: '))

要:

inputSomething(lambda : input('Enter str: '))

value = (prompt)

要:

value = prompt()

这样你传递一个函数然后调用它,而不是传递一个被调用函数的结果。

答案 2 :(得分:0)

为了将来参考,还包括重试的另一种方式:

import sys

def inputSomething(prompt, retries = 2, errorMessage = 'Atleast one character must be used'):
    while retries > 0:
        value = input("Enter str: ")
        Response = value.strip()
        if Response:
            print ('Valid')
            retries -= 1
            continue
            #return Response
        else:
            print(errorMessage, file=sys.stderr)
            retries -= 1

inputSomething('prompt')