Пользовательская функция для возврата длины строки - PullRequest
0 голосов
/ 02 января 2019

Я хочу определить функцию, которая принимает ввод от пользователя, возвращает длину строки ввода и печатает это.

У меня есть следующий код:

def str_length(my_string):
    my_string = input("give me a string: ")
    return len(my_string)
print(str_length(my_string))

Этот код не работает.Когда я изменяю параметр в последней строке на «привет», код работает.

def str_length(my_string):
    my_string = input("give me a string: ")
    return len(my_string)
print(str_length("hello"))

Может кто-нибудь объяснить мне, почему первый код не работает, а второй работает?Я в полном замешательстве: - (

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Как указал @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.  
0 голосов
/ 02 января 2019

Вы должны определить это так:

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

Разница в том, что мы получаем ввод от пользователя из области действия функции,передать его функционировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...