Python【每日一问】24

博客围绕Python编程展开,包含基础题和提高题解答。基础题有解释if __name__ == '__main__'的作用,以及根据输入字母判断星期几;提高题是打印所有“水仙花数”,并给出多种解题方法。

问:

【基础题1】: 请解释一下 if __name__ == '__main__' :的作用

【基础题2】:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

PS:

Monday        周一    
Tuesday       周二    
Wednesday     周三    
Thursday      周四    
Friday        周五    
Saturday      周六    
Sunday        周日   

 

【提高题】:打印出所有的“水仙花数”

PS:所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153 是一个“水仙花数” ,因为 153=1 的三次方+5 的三次方+3 的三次方

答:

 

【基础题1】: 请解释一下 if __name__ == '__main__' :的作用

一个python文件有两种使用情况:

(1)直接作为脚本执行
(2)作为module被 import 到其他的 python 脚本中调用执行

if __name__ == 'main': 的作用:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

 

 if __name__ == '__main__' :起作用的原理:

每个 python 模块都包含内置的变量 __name__,
(1)当 python 模块被直接执行时,__name__ 等于"__main__";
(2)当作为 module 被 import 到其他 python 文件时,则 __name__ 等于模块名称(不包含后缀.py),

因此:
(1)当模块被直接执行时,__name__ == 'main'返回结果为 True (2)当作为 module 被 import 时,__name__ == 'main'返回结果为 False

 

【基础题2】:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

 方法1:

letter = input("please input:")

if letter == "S":
    letter = input("please input second letter:")
    if letter == "a":
        print("Saturday")
    elif letter == "u":
        print("Sunday")
    else:
        print("data error")

elif letter == "F":
    print("Friday")
elif letter == "M":
    print("Monday")
elif letter == "T":
    letter = input("please input second letter:")
    if letter == "u":
        print("Tuesday")
    elif letter == "h":
        print("Thursday")
    else:
        print("data error")
elif letter == "W":
    print("Wednesday")
else:
    print("data error")

 

方法2:

str = input("请输入第一个字符:\n")

if str is "m" or str is "M":
    print("Monday")
elif str is "t" or str is "T":
    str1 = input("请输入第二个字符:\n")
    if str1 is "u" or str is "U":
        print("Tuesday")
    elif str1 is "h" or str is "H":
        print("Thursday")
elif str is "w" or str is "W":
    print("Wednesday")
elif str is "f" or str is "F":
    print("Friday")
elif str is "s" or str is "S":
    str2 = input("请输入第二个字符:\n")
    if str2 is "a" or str is "A":
        print("Saturday")
    elif str2 is "u" or str is "U":
        print("Sunday")

 

【提高题】:打印出所有的“水仙花数” 

PS:所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153 是一个“水仙花数” ,因为 153=1 的三次方+5 的三次方+3 的三次方

方法1:

def PPDI():
    for i in range(100,1000):
        if i == (i // 100)**3 + (i % 100 // 10)**3 + (i% 100 %10)**3:
            print(i)

PPDI()

 

方法2:

for firstNumber in range(1, 10):
    for secondNumber in range(10):
        for thirdNumber in range(10):
            number = firstNumber*100 + secondNumber*10 + thirdNumber
            if firstNumber**3 + secondNumber**3 + thirdNumber**3 == number:
                print(number)

 

方法3:

for i in range(100, 1000):
    a = int(str(i)[0])
    b = int(str(i)[1])
    c = int(str(i)[2])
    if a ** 3 + b ** 3 + c ** 3 == i:
        print(i)

 

方法4:

def waters():
    for i in range(100, 1000):
        num = i
        result = []
        while i > 0:
            result.append((i % 10) ** 3)
            i = i // 10

        if num == sum(result):
            print(num, end=" ")


if __name__ == "__main__":
    waters()

 

输出结果:

153
370
371
407

 

转载于:https://www.cnblogs.com/ElegantSmile/p/10855189.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值