我想定义一个函数,该函数接受用户的输入,返回输入字符串的长度并打印出来。
我有以下代码:
def str_length(my_string):
my_string = input("give me a string: ")
return len(my_string)
print(str_length(my_string))
此代码无效。当我将最后一行中的参数交换为“ hello”时,代码起作用。
def str_length(my_string):
my_string = input("give me a string: ")
return len(my_string)
print(str_length("hello"))
谁能向我解释为什么第一个代码不起作用而第二个代码却起作用?我很困惑:-(
答案 0 :(得分:3)
您应该这样定义它:
def str_length():
my_string = input("give me a string: ")
return len(my_string)
print(str_length())
当您使用my_string
调用函数时,会得到NameError
,因为还没有my_string
定义。您可以在函数中定义它。 (调用后)。这就是原因。
由于@prashantrana,您还可以这样定义函数:
def str_length(my_string):
return len(my_string)
my_string = input("give me a string: ")
print(str_length(my_string))
这里的区别是我们从功能范围之外获得用户输入,并将其传递给功能。
答案 1 :(得分:1)
正如@UnholySheep所指出的那样,您的函数正在使用似乎不需要的参数。
让我们分解一下
Def str_length (): # start of function definition
# promt user for the string and put it in the variable "my _string"
my_string = input ("give me a string:")
# return the length of input string
return len(my_string)
print(str_length ()) # the function is called inside print () and therefore returns the length of the user input string to print () to be printed on screen.