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

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

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

То, что я намеревался сделать: создание функции, которая берет оценку теста от пользователя и выводит буквенные оценки в соответствии со шкалой / кривой оценки; Вот код:

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, если явно не указано иначе». Но я действительно вызывал функцию на последней строке, поэтому я немного запутался здесь.

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

  • Преобразование строки в int слишком медленно
  • Как я могу получить поведение сортировки типа 2.x в Python 3.x?
  • TypeError: attack () отсутствует 1 обязательный позиционный аргумент: 'self'
  • Изменение типа класса после вставленных данных
  • Добавление всех номеров из списка вместе (не суммирование). Python 3.3.2
  • Возможно ли предварительно заполнить вход () в интерфейсе командной строки Python 3?
  • Как Python возвращает несколько значений из функции?
  • Python - расширение списка напрямую приводит к None, почему?
  • 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 - лучший язык программирования в мире.