中国大学MOOC《Python语言程序设计》第4周题目 多种解法答案:三位水仙花数/用户登录的三次机会

中国大学MOOC《Python语言程序设计》 学习记录

  • 第4周练习题4:三位水仙花数
    • 我的代码
    • 答案
  • 第4周练习题5:用户登录的三次机会
    • 我的代码
    • 答案

第4周练习题4:三位水仙花数

描述

"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果(输出示例:111,222)

我的代码

我想到了.append()方法,决定用列表。数字位数的提取,我用的是数值运算。

list.append(obj) 把对象(obj)添加到列表末尾。

ls = []
for i in range(100, 1000):
    a = i // 100
    b = i // 10 % 10
    c = i % 100 % 10
    d = a**3 + b**3 + c**3
    if d == i:
        ls.append(i)

如果这时print(ls)会是一个列表,不符合题目要求。需要转换成字符串形式:

m = ''
for n in ls:
    m += str(n) + ","
print(m)

这样输出就符合要求了。

答案

平台给出的答案用的是字符串,用索引<字符串>[值]来提取位数。

s = ""
for i in range(100, 1000):
    t = str(i)
    if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
        s += "{},".format(i)
print(s[:-1])

第4周练习题5:用户登录的三次机会

描述

给用户三次输入用户名和密码的机会,要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

我的代码

我用的是计数遍历循环的扩展模式else

for i in range(3):
    a = input()
    b = input()
    if a == "Kate" and b == "666666":
        print("登录成功!")
        break
else:
    print("3次用户名或者密码均有误!退出程序。")

答案

下面是平台给出的答案,用的是无限循环和一个单分支结构。

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

你可能感兴趣的:(中国大学MOOC《Python语言程序设计》第4周题目 多种解法答案:三位水仙花数/用户登录的三次机会)