python— 三位水仙花数 用户登录的三次机会

 

#三位水仙花数

#清晰版

f = []
for i in range(100,1000):
    gwei = i//100
    swei = (i//10)%10
    bwei = i%10
    if i == gwei**3+swei**3+bwei**3:
        f.append(str(i))
print(','.join(f))

#精简了一下

f = []
for i in range(100,1000):
    if i ==pow(i//100,3) + pow(i//10%10,3) + pow(i%10,3):
        f.append(str(i))
print(','.join(f))

 

思路:(最后的逗号输出,整了好久。刚开始这样写(end=',')但最后一个逗去不掉。)

那么这个题目的关键就是,给定一个三位数abc,如何获得它的个位数c,十位数b,百位数a?

我们先来看第一种解决方案,也是最主流的解决方法:数位分离。

以153为例,我们先看,如何获得它的个位数3?只要%10就可以了:

153%10=3

通过模10运算,我们将个位数3分离了出来。

那么如何分离十位数5?先将十位数挪到个位,再利用%10,不就可以分离出来了吗?

通过除以10向下取整,可以将十位数挪到个位上来:

153//10=15

再利用模运算分离个位上的10即可:

15%10=5

这样我们就获得了十位数5.

同理,如果想得到153的百位数,将153除以100向下取整即可:

153 // 100 = 1

这就是数位分离的思想,先得到要验证的总数,再将各个位数分离出来。

 

 

count = 0
while count < 3 :
    user = input()
    pwd = input()
    if user=='Kate' and pwd=='666666':
        print('登录成功!')
        break
    else:
        count = count+1
        if count == 3:
            print("3次用户名或者密码均有误!退出程序。")

  

  

posted @ 2020-04-23 14:35  淼如  阅读(243)  评论(0)    收藏  举报