qiuyongbao 发表于 2020-8-17 02:30:44

新手求解

score = int(input("请输入一个分数:"))
lever = "a" if 100 >= score >= 90 else "b" if 90 >= score >= 0 else print("输入错误")
print(lever)


请教print(lever),输入90,返回值为a,为什么不会显示lever?


如果加入引号print("lever"),无论输入什么数字都是显示lever,并不会显示a or b
{:5_100:}

zltzlt 发表于 2020-8-17 06:55:42

为什么不会显示 lever?

什么意思,我这里有显示

求资专用 发表于 2020-8-17 08:37:13

lever = "a" if 100 >= score >= 90 意思是当输入分数大于等于90小于等于100时 给变量 字符串“a”取个名字叫lever。这个变量实际上是a,只是名字叫lever
所以当你要print(lever)的时候当然打出的是a。
而print(“lever”),和上面的“a”一样,用引号框住表示它是一个字符串。这串代码的意思是打印这个字符串。

sunrise085 发表于 2020-8-17 08:50:20

你可能对变量和常量有所误解?

先说第一个问题。
请教print(lever),输入90,返回值为a,为什么不会显示lever?
lever是一个变量名,当你输入一个score,第二行代码就会给lever赋值,lever为 'a' 或 'b' 或 None。这与你输入的score有关,当score在100~90之间的话,lever='a',当score在90~0之间的话,lever='b',当score为其他值时,程序会先在IDLE中输出"输入错误",然后lever的值为print函数的返回值,即为None
程序第三行,输出lever的值,lever是什么就会输出什么
所以当你输入90的时候,第三行print输出的就是字符 a 。你若想在IDLE中显示 lever=a,那么第三行一这样写:print("lever =",lever)

再来说说第二个问题。
如果加入引号print("lever"),无论输入什么数字都是显示lever,并不会显示a or b
你若用引号括起来,那么"lever"就是一个常量了,是一个字符串,与变量lever没有什么关系,所以不管你输入什么都不影响print的输出

除了以上两个问题以外,其实你这里还有问题

1、第二行的两端if有重叠,score=90的时候,两段都符合条件

2、你好像对返回值和IDLE中断输出有误解。
请教print(lever),输入90,返回值为a
这个a不是返回值,是IDLE的终端显示,是print执行的结果,并不是返回值,print函数的返回值是None
页: [1]
查看完整版本: 新手求解