全新的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;。
答案 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()会让你复杂化。