为什么while response[0] == “y“ or “Y“会无限循环, 第二个表达式“Y”, 它是一个非空的字符串,所以Python会永远把它解释为真

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值