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

Python - Passing input (prompt) into Function

我正在尝试创建一个函数来接收用户的输入,重新提示直到输入一个字符。 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 吗?

问题是 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

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

变化:

inputSomething(input('Enter str: '))

收件人:

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

并且:

value = (prompt)

收件人:

value = prompt()

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

为了将来参考,另一种方法也包括重试:

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')