Python【每日一问】24

问:

【基础题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__ 等于文件名(包含了后缀.py);
(2)当作为 module 被 import 到其他 python 文件时,则 __name__ 等于模块名称(不包含后缀.py),

无论哪种情况, “__main__” 的值均为当前执行文件的名称(包含了后缀.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

猜你喜欢

转载自www.cnblogs.com/ElegantSmile/p/10855189.html