我对用户定义函数一无所知,我想知道如何在此函数中定义数字变量?
def getNumber(str,input,number):
number= str(input("Give me a number!:"))
if (number.isdigit())==True:
print("Thats a great number I love "+str(number))
while (number.isdigit())==False:
number=str(input("You lied to me thats not a number! Give me a number!"))
getNumber(number)
答案 0 :(得分:3)
为什么您甚至需要函数的参数。尝试下面的代码。
您正在函数中明确定义数字。 您正在从用户那里获得输入。 我认为这就是您真正想要的。 另外,您的函数具有3个参数,并且您仅传递了一个作为数字的参数,而该参数甚至没有定义,这就是为什么您会收到错误消息。即使定义了变量号,也仍然会出现错误,因为那里还有两个参数,因为不需要它们是没有意义的!
def getNumber():
number= str(input("Give me a number!:"))
if (number.isdigit())==True:
print("Thats a great number I love "+str(number))
while (number.isdigit())==False:
number=str(input("You lied to me thats not a number! Give me a number!"))
getNumber()
答案 1 :(得分:1)
在Python中,此
def getNumber(str,input,number):
number= str(input("Give me a number!:"))
if (number.isdigit())==True:
print("Thats a great number I love "+str(number))
while (number.isdigit())==False:
number=str(input("You lied to me thats not a number! Give me a number!"))
getNumber(number)
与此非常不同
def getNumber(str,input,number):
number= str(input("Give me a number!:"))
if (number.isdigit())==True:
print("Thats a great number I love "+str(number))
while (number.isdigit())==False:
number=str(input("You lied to me thats not a number! Give me a number!"))
getNumber(number)
运行第一个版本时,包含if (number.isdigit()
的第三行不是您的函数的一部分-它没有缩进,因此实际上是在函数之外并且在模块的根目录。
这意味着在您运行模块时,您正在使用的变量(number
变量)尚未声明且不存在。
答案 2 :(得分:0)
您可以通过var_name = value
,即num = 4
或string = 'A string
为变量定义任何值。
您要扫描用户输入并确认字符串(\D
)中没有任何非数字字符:
import re
def getNumber():
number= str(input("Give me a number!:"))
# re (regex module), check for characters in the alphabet
if re.search('\D',number) != None:
return False # or use re module to remove unwanted characters by using re.replace().
else:
if '.' in number:
return float(number)
else:
return int(number)
注意的编写方式,当调用该函数时,它将要求用户输入。如果要检查输入是否为数字,而无需在函数内部调用用户输入,请为函数提供将要检查的参数。即
import re
def getNumber(input):
# re (regex module), check for characters in the alphabet
if re.search('\D',number) != None:
return False # or use re module to remove unwanted characters by using re.replace().
else:
if '.' in input:
return float(input)
else:
return int(input)
>>> getNumber('a3')
False
>>> getNumber('3')
3
希望这会有所帮助。请务必查看re模块文档以获取更多信息。
干杯!