input()始终生成“None”

时间:2017-10-21 18:02:20

标签: python python-3.x

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

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

3 个答案:

答案 0 :(得分:4)

这一行:

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始终返回None,因此retNone,因此您对input的调用会打印出None

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

答案 1 :(得分:2)

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

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

所以当你说

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

input以字符串作为参数,自动打印。因此,由于您的打印statement首先执行,然后返回None,然后由input函数打印,因此您也会打印None

你做的额外事实是print函数中的input语句。只需删除它,它就可以正常工作。

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

答案 2 :(得分:0)

我知道每个人都这么说,但是是的,您应该删除输入函数中的打印语句。删除后,您的代码应该可以工作。而且,我以前也遇到过这种情况,还有其他一些方法可以解决此类问题。

这是我的代码:

from rich import print
while True:
    command = input(print("[green](CMD)[red]~$"))

每当我运行该代码时,就会发生以下情况:

(CMD)~$
None

所以我更改了代码,而不是在输入中打印,我使用了打印然后是空输入:

print("[green](CMD)[red]~$", end=" ")
command = input("")

在此之后,我的代码工作了。如果您想将颜色放入代码中,您可以这样做。这样你才能让你的代码正常工作。