数据类型的小白问题,请大佬教一下!!!

请教大佬一个问题
pwd=int(input('请输入密码:'))

while pwd!=520666:
    if pwd==520666:
        print('正确')
        break
    else:
        pwd=int(input('密码输入错误,请重新输入'))


while pwd!=520666
这个地方加了引号就能打印‘正确’
不加就打印不了

搞不懂的是:pwd是数字 ‘520666’是字符串
不同类型的能比较也就算了
我用pwd !=520666 数字和数字比较 还不能正常打印

您好,首先题主代码有逻辑问题;其次python是弱类型语言,不同类型变量可以比较

代码分析如下:

pwd=int(input('请输入密码:'))#输入密码(字符串类型),然后强转成int赋值给pwd变量

while pwd!=520666:#只有pwd不等于520666时才会执行循环
    if pwd==520666:#所以ipwd满足循环条件后,if判断一定为false,也就是执行else语句
        print('正确')
        break
    else:
        pwd=int(input('密码输入错误,请重新输入'))#只有输入520666时会终止循环,否则一直提示重新输入

其次python语言,任何两个对象都可以比较

不同类型的对象时,数字型的对象<其它非数字型的对象

所以,while循环条件改成pwd!='520666'时,因为pwd是int类型,不等于字符串'520666',所以恒成立,此时等价于 while True:。

 

建议方案:

把循环条件改成 while True:

直接用字符串进行比较,不要强转int

pwd=input('请输入密码:')
while True:
    if pwd=='520666':
        print('正确')
        break
    else:
        pwd=input('密码输入错误,请重新输入:')

 

你这个if语句的条件永远也满足不了呀,

不相等才循环,然后在循环里面判断是否不是自相矛盾吗?为什么要这个循环语句呢?应该可以删除吧

while pwd!=520666 如果你密码输入正确了,while 都进不去,所以你要改成 while true 才行

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632