Python Script возвращает непреднамеренное «None» после выполнения функции

Спецификации: Ubuntu 13.04 Python 3.3.1

Предпосылки: общий новичок для Python; искал об этом вопросе, но ответ, который я нашел, был больше о «чем», чем «почему»;

  • Python способ печати: с форматом или формой процента?
  • Мне нужна помощь, обертывающая мою голову вокруг оператора return с помощью Python и его роли в этом рекурсивном выражении
  • Как печатать Docstring функции python внутри самой функции?
  • Как печатать словарь по строкам в Python?
  • Как применить функцию __str__ при печати списка объектов в python
  • В чем преимущество новой функции печати в Python 3.x над оператором печати Python 2?
  • То, что я намеревался сделать: создание функции, которая берет оценку теста от пользователя и выводит буквенные оценки в соответствии со шкалой / кривой оценки; Вот код:

    score = input("Please enter test score: ") score = int(score) def letter_grade(score): if 90 <= score <= 100: print ("A") elif 80 <= score <= 89: print ("B") elif 70 <= score <= 79: print("C") elif 60 <= score <= 69: print("D") elif score < 60: print("F") print (letter_grade(score)) 

    Это, когда выполняется, возвращается: Please enter test score: 45 F None

    «None» не предназначен. И я обнаружил, что если я использую (letter_grade(score) вместо print (letter_grade(score)) , то «none» больше не появляется.

    Самый близкий ответ, который я смог найти, сказал что-то вроде «Функции в python return None, если явно не указано иначе». Но я действительно вызывал функцию на последней строке, поэтому я немного запутался здесь.

    Поэтому, наверное, мой вопрос будет: что вызвало исчезновение «Нет»? Я уверен, что это довольно простой материал, но я не смог найти ответа, объясняющего механизм «за сценой». Поэтому я благодарен, если кто-то может пролить свет на это. Спасибо!

  • В чем преимущество новой функции печати в Python 3.x над оператором печати Python 2?
  • Мне нужна помощь, обертывающая мою голову вокруг оператора return с помощью Python и его роли в этом рекурсивном выражении
  • Python 'with' statement versus 'with .. as'
  • Python "if" синтаксическая ошибка оператора
  • Что такое префикс u в строке python
  • tput cup в python на командной строке
  • One Solution collect form web for “Python Script возвращает непреднамеренное «None» после выполнения функции”

    В python возвращаемое по умолчанию значение функции равно None .

     >>> def func():pass >>> print func() #print or print() prints the return Value None >>> func() #remove print and the returned value is not printed. >>> 

    Итак, просто используйте:

    letter_grade(score) #remove the print

    Другой альтернативой является замена всех отпечатков return :

     def letter_grade(score): if 90 <= score <= 100: return "A" elif 80 <= score <= 89: return "B" elif 70 <= score <= 79: return "C" elif 60 <= score <= 69: return "D" elif score < 60: return "F" else: #This is returned if all other conditions aren't satisfied return "Invalid Marks" 

    Теперь используйте print() :

     >>> print(letter_grade(91)) A >>> print(letter_grade(45)) F >>> print(letter_grade(75)) C >>> print letter_grade(1000) Invalid Marks 
    Python - лучший язык программирования в мире.