这些是什么"没有"在我的输出底部?

时间:2017-11-13 19:43:33

标签: python python-3.x

全新的python。在python中使用map函数时,我得到一系列单词" none"当我运行我的功能时作为输出。我在下面添加了截图。

代码

def rawGradeToLetter(grade):
   if grade >= 90:
      print ("A")
   elif grade < 90 and grade >= 80:
      print ("B")
   elif grade < 80 and grade >= 70:
      print ("C")
   elif grade < 70 and grade >= 60:
      print ("D")
   elif grade < 60:
      print ("F")

def convertRawsToLetters(myList):
   return list(map(rawGradeToLetter, myList))

示例运行:

>>> convertRawsToLetters([90,80,70])
A
B
C
[None, None, None]

我觉得它与地图功能之前的单词列表有关,但如果我删除了所有我得到的是地图的地址,如#34;地图对象在0x8g9b7ea51950&#34;。

3 个答案:

答案 0 :(得分:4)

您需要返回成绩,而不是打印。打印等级会在屏幕上显示它们,而不是将值返回给调用者。

def rawGradeToLetter(grade):
   if grade >= 90:
      return "A"
   elif grade < 90 and grade >= 80:
      return "B"
   elif grade < 80 and grade >= 70:
      return "C"
   elif grade < 70 and grade >= 60:
      return "D"
   elif grade < 60:
      return "F"

如果没有return语句,您的函数会隐式返回None,这就解释了您在输出中看到[None, None, None]的原因。

答案 1 :(得分:0)

我认为这是因为您没有在地图功能上返回任何内容,因此它无法正常工作。您可以尝试这样做,因此它不会映射到None,而是映射到结果:

def rawGradeToLetter(grade):
    if grade >= 90:
        print ("A")
        return "A"
    elif grade < 90 and grade >= 80:
        print ("B")
        return "B"
    elif grade < 80 and grade >= 70:
        print ("C")
        return "C"
    elif grade < 70 and grade >= 60:
        print ("D")
        return "D"
    elif grade < 60:
        print ("F")
        return "F"

def convertRawsToLetters(myList):
   return list(map(rawGradeToLetter, myList))

如果您想要保留打印件,则可以删除它们。

答案 2 :(得分:-1)

def rawGradeToLetter(grade):
    if grade >= 90:
        print ("A")
    elif grade < 90 and grade >= 80:
        print ("B")
    elif grade < 80 and grade >= 70:
        print ("C")
    elif grade < 70 and grade >= 60:
        print ("D")
    elif grade < 60:
        print ("F")


def convertRawsToLetters(myList):
    for grade in myList:
        rawGradeToLetter(grade)

如果你想做的就是打印成绩,我认为你使用map()会让你复杂化。

相关问题