Ошибка имени: имя не определено в Python

#python

#python

Вопрос:

У меня есть функция, которая, когда я запрашиваю ввод пользователя, работает нормально, но когда я пытаюсь вызвать функцию, она показывает мне сообщение: «Ошибка имени: имя не определено в Python»

Моя цель — создать формат bibformat, например, Джордж Р. Р. Мартин (1996). Игра престолов. Нью-Йорк: Bantam Spectra. Моя функция показана ниже.

 def bibformat(author,title,city,publisher,year):
   return author " (" str(year) "). " title ". " city ": " publisher "."
  

и часть, которая запрашивает ввод пользователя, показана ниже:

 def bibformat_display():
   author=input("Author:")
   title=input("Title:")
   city=input("City:")
   publisher=input("Publisher:")
   year=input("Year:")
   print(bibformat(author,title,city,publisher,year))
  

Когда я пытаюсь запустить код, часть, запрашивающая ввод пользователя, работает нормально

 bibformat_display()
Author: George R. R. Martin
Title: A Game of Thrones
City: New York City
Publisher: Bantam Spectra
Year: 1996
George R. R. Martin (1996). A Game of Thrones. New York City: Bantam Spectra.
  

Но когда я пытаюсь вызвать функцию, она показывает ошибку

 bibformat(George R. R. Martin, A Game of Thrones, New York City, Bantam Spectra, 1996)
NameError: name 'sdfsa' is not defined
  

Я пытался изменить свою функцию, но она все еще не работает, может кто-нибудь мне помочь? Спасибо!

Комментарии:

1. Используйте правильные отступы в опубликованном коде

2. sdfsa не отображается в том, что вы опубликовали? Посмотрите на строку, указанную в ошибке

3. Разве вы не нашли лучшего способа сделать это, использовать f строки для return и заключать имена в кавычки, например bibformat('George R. R. Martin', 'A Game of Thrones', 'New York City', 'Bantam Spectra', 1996)

Ответ №1:

Вы передаете текст без кавычек, поэтому Python ожидает переменную.

Решение

Поместите текст в кавычки и передайте его функции следующим образом:

 bibformat('George R. R. Martin', 'A Game of Thrones', 'New York City', 'Bantam Spectra', 1996)