![为什么while response[0] == “y“ or “Y“会无限循环, 第二个表达式“Y”, 它是一个非空的字符串,所以Python会永远把它解释为真,第1张 为什么while response[0] == “y“ or “Y“会无限循环, 第二个表达式“Y”, 它是一个非空的字符串,所以Python会永远把它解释为真,第1张](/aiimages/%E4%B8%BA%E4%BB%80%E4%B9%88while+response%5B0%5D+%3D%3D+%E2%80%9Cy%E2%80%9C+or+%E2%80%9CY%E2%80%9C%E4%BC%9A%E6%97%A0%E9%99%90%E5%BE%AA%E7%8E%AF%EF%BC%8C+%E7%AC%AC%E4%BA%8C%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F%E2%80%9CY%E2%80%9D%2C+%E5%AE%83%E6%98%AF%E4%B8%80%E4%B8%AA%E9%9D%9E%E7%A9%BA%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%8C%E6%89%80%E4%BB%A5Python%E4%BC%9A%E6%B0%B8%E8%BF%9C%E6%8A%8A%E5%AE%83%E8%A7%A3%E9%87%8A%E4%B8%BA%E7%9C%9F.png)
def main():
sum=0.0
count=0
moredata="yes"
while moredata[0]=="y" or "Y":
x=eval(input("Enter a number >>"))
sum=sum+x
count=count+1
moredata=input("Do you have more numbers(yes or no)?")
print("\nThe average of the numbers is ",sum/count)
main()
第二个表达式中的布尔表达式,为什么会被while判读为永远为真,因为:
bool 类型仅仅是一个特殊的整数,可以通过计算表达式 True + True的值来测试一下
对于系列类型来说,一个空系列解释为假,任何一个非空系列解释为真
所以,while response[0] == "y" or "Y",加上括号好理解些
while (response[0] == "y" )or ("Y"),因为("Y")属于非空系列,所以会被bool判断永远为真,所以,只要有输入任何字符,while语句都会不断的去执行下去。
while response[0] == "y" or response[0]=="Y":
while response[0] == "y" or "Y"
思考上面两条代表码有何区别
第二个表达式“Y”, 它是一个非空的字符串,所以Python会永远把它解释为真
输出如下:
nter a number >>40
Do you have more numbers(yes or no)?Y
Enter a number >>90
Do you have more numbers(yes or no)?y
Enter a number >>90
Do you have more numbers(yes or no)?y
Enter a number >>88
Do you have more numbers(yes or no)?9
Enter a number >>0
Do you have more numbers(yes or no)?N
Enter a number >>0
Do you have more numbers(yes or no)?1
Enter a number >>0
Do you have more numbers(yes or no)?
所以你永远也求不到平均数,要注意布尔表达式的真假取值情况。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)