input() 总是产生“无”

新手上路,请多包涵

每当我运行我创建的评分程序时,它工作正常,但文本“无”一直出现,我不知道为什么。这是代码:

 Grade_in=input(print("Enter Your Grade (Only Upper Case):"))
if (Grade_in=='A+') :
    print ("Numeric Grade is 4")
elif (Grade_in=='A'):
    print("Numeric Grade is 4")
elif (Grade_in=='A-'):
    print("Numeric Grade is 4.3")
elif (Grade_in=='B+'):
    print ("Numeric Grade is 3.3")
elif (Grade_in=='B'):
    print ("Numeric Grade is 3")
elif (Grade_in=='B-'):
    print ("Numeric Grade is 2.7")
elif (Grade_in=='C+'):
    print ("Numeric Grade is 2.3")
elif (Grade_in=='C'):
    print ("Numeric Grade is 2")
elif (Grade_in=='C-'):
    print ("Numeric Grade is 1.7")
elif (Grade_in=='D+'):
    print ("Numeric Grade is 1.3")
elif (Grade_in=='D'):
    print ("Numeric Grade is 1")
elif (Grade_in=='D-'):
    print ("Numeric Grade is 0.7")
elif (Grade_in=='F') :
    print ("Numeric Grade is 0")
else :
    print ("Invalid Grade..!")

OUTPUT :
Enter Your Grade (Only Upper Case):
NoneB-
Numeric Grade is 2.7

原文由 Samuel Emmanuel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 732
2 个回答

这一行:

 Grade_in=input(print("Enter Your Grade (Only Upper Case):"))

应该:

 Grade_in=input("Enter Your Grade (Only Upper Case):")

您的原始代码等同于:

 ret = print("Enter Your Grade (Only Upper Case):")
Grade_in = input(ret)

print always returns None , so ret is None , so your call to input prints out None

您根本不需要 print ,因为 input 已经打印出您传递给它的内容。

原文由 user94559 发布,翻译遵循 CC BY-SA 3.0 许可协议

看一下 print() 函数的返回类型:

 >>> type(print())
=> <class 'NoneType'>

所以当你说

Grade_in=input(print("Enter Your Grade (Only Upper Case):"))

input 将一个字符串作为参数,它会 自动打印出来。 So since your print statement first, and returns a None , which is then printed by the input function, hence you have the None 也印在那里。

实际上,您所做的额外操作是 input 函数中的 print 语句。只需删除它,它就会按预期工作。

 Grade_in=input("Enter Your Grade (Only Upper Case):")

原文由 Kaushik NP 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题