2016-12-20 2 views
0

Я разочарован тем, что мне не удалось создать эту функцию - это кажется простым, но по какой-то причине я не могу понять это. Как следует из названия, я пытаюсь создать функцию Python, которая получает строку, а затем возвращает эту строку с восклицательным знаком, добавленным в конец.Функция Python, которая получает строку, возвращает строку + "!"

вход "Hello" должен вернуть

Hello! 

вход "Goodbye" должен вернуть

Goodbye! 

Etc.

Вот что я пробовал:

def addExclamation(s): 
    s = input("please enter a string") 
    new_string = s + "!" 
    return new_string 

print(s(addExclamation)) 

Это дал мне сообщение об ошибке:

NameError: name 's' is not defined on line 6 

Почему «нет»? Я думал, что решил, что s - это вход в функцию addExclamation. Спасибо за помощь.

+0

Вы смешиваете все. – TigerhawkT3

+0

@ TigerhawkT3 Что я смешиваю? – HappyHands31

ответ

2

Вы определяете функцию с параметром s. Эта функция немедленно отбрасывает это значение и запрашивает ввод. Вы вызываете функцию с тем же именем, что и этот параметр, и отправляете ей аргумент имени функции. Это не имеет никакого смысла.

def addExclamation(s): 
    new_string = s + "!" 
    return new_string 

print(addExclamation('Hello')) 

Или:

def addExclamation(): 
    s = input("please enter a string") 
    new_string = s + "!" 
    return new_string 

print(addExclamation()) 
1

Вы перепутали функцию и аргумент здесь:

print(s(addExclamation)) 

И, вы, вероятно, имел в виду, чтобы прочитать вход вне функции и передать строку в:

def addExclamation(s): 
    new_string = s + "!" 
    return new_string 

s = input("please enter a string") 
print(addExclamation(s)) 
1

В заявлении:

s(addExclamation) 

Вы пытаетесь вызвать функцию s, которая не определена.

Параметр, который вы указываете addExclamation, является функцией, которую вы хотите вызвать. Вы должны написать:

addExclamation("Hello") 

В этом примере, вы вызываете функцию addExclamation() с параметром строки: «Привет».

Но вы должны изменить ее реализации:

def addExclamation(s): 
    result = s + "!" 
    return result 

Эта реализация является само за себя: он создает новую строку result с конкатенации исходной строки s и «!».

Если вы хотите использовать input, вы можете сделать:

text = input("Enter a text: ") 
print(addExclamation(text)) 
Смежные вопросы