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)