2021-05-12MOOC北京大学Python语言基础与应用第5章题目学习

1.打印一定范围内的水仙花数:水仙花数是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。

image.png

学着学着就忘了python最原始的内置函数,所以刚开始使用方式时间和内存会多一些。

这里提交时候显示的:


image.png
# -*- coding: utf-8 -*-
#5.1打印一定范围内的水仙花数
def IsNum(num):
    n=num
    m=num
    old_num=num
    #统计这个数的位数,即为count
    count=0
    sum_num=0
    while n!=0:
        count+=1
        n//=10
    #辗转相除得到每一位,然后累积求和
    while m!=0:
        last_num = m % 10
        sum_num += last_num**count
        m//=10
    #判断是否等于其本身,由于经过两个循环num会改变,所以提前存放在old_num变量中
    if sum_num==old_num:
        print(old_num)
        return 1
    else:
        return 0

if __name__ == "__main__":
    n=int(input())
    for i in range(100,n+1):
        IsNum(i)

使用len函数后


image.png
# -*- coding: utf-8 -*-
#5.1打印一定范围内的水仙花数
def IsNum(num):
    old_num=num
    #使用len函数得到长度
    L=len(str(num))
    sum_num=0
    #辗转相除得到每一位,然后累积求和
    while num!=0:
        last_num = num % 10
        sum_num += last_num**L
        num//=10
    #判断是否等于其本身,由于经过循环num会改变,所以提前存放在old_num变量中
    if sum_num==old_num:
        print(old_num)
        return 1
    else:
        return 0

if __name__ == "__main__":
    n=int(input())
    for i in range(100,n+1):
        IsNum(i)

看到代码简洁的方法但是内存和时间还是挺多的,所以还是写成函数吧。


image.png
# -*- coding: utf-8 -*-
#5.1打印一定范围内的水仙花数
max = input()
for i in range(100, int(max)+1):
    n = len(str(i))
    s = 0
    for j in str(i):
        s += int(j) ** n
    if s == i:
        print(s)

2.输入两个字符串,输出两个字符串集合的并集。

image.png
s1=input()
s2=input()
list=[]
for i in s1:
    list.append(i)
for j in s2:
    list.append(j)
aset=set(list)
print(sorted(aset))

3.与7相关的数:如果一个正整数,它能被7整除或者它的十进制表示法中某个位数上的数字为7,则称之为与7相关的数。

def SevenNum(num):
    old_num=num
    if old_num%7==0:
        return True
    #使用len函数得到长度
    L=len(str(num))
    #辗转相除得到每一位,判断是否能被7整除
    while num!=0:
        last_num = num % 10
        if last_num==7:
            return True
        else:
            num//=10
    else:
        return False

if __name__ == "__main__":
    n=int(input())
    s=0
    for i in range(1,n+1):
        if SevenNum(i)==False:
            s+=i**2
    print(s)

4.打印完数:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如 6 = 1+2+3。

# -*- coding: utf-8 -*-
def isPerfectNumber(num):
    '判断num是否为完数'
    num = int(num)
    sum = 0
    factorList = []  # 存放num的所有因子
    for i in range(1, int(num / 2) + 1):
        if num % i == 0:
            factorList.append(i)
    for j in factorList:
        sum += j
    if num == sum:
        return True
    return False


n=int(input())
for i in range(1,n):
    if isPerfectNumber(i):
        print(i)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容