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