一个自定义函数,返回字符串的长度

时间:2019-01-02 10:13:56

标签: python string function

我想定义一个函数,该函数接受用户的输入,返回输入字符串的长度并打印出来。

我有以下代码:

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

谁能向我解释为什么第一个代码不起作用而第二个代码却起作用?我很困惑:-(

2 个答案:

答案 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.