题目一:
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。(水仙花数,太经典)
for i in range(100,1000):
#百位数
a = int(i/100)
#十位数
b =int((i-a*100)/10)
#个位数
c = i%10
sum = (a*a*a)+(b*b*b)+(c*c*c)
if sum == i:
print(i,"是水仙花数")
题目二:
现在有30个人围成一个圈,依次给他们编号,然后从第一个人顺时针开始报数,当有人报的数字为7的倍数时,这个人会退出这个圈,请问最后一个退出的人,编号为多少。(约瑟夫环,经典)
lis = list(range(1,31))
index = 0
for i in range(30):
#报的数
count = 0
while count < 7:
if lis[index] != 0:
count += 1
if count == 7:
print(lis[index],"退出")
#把退出的人留空
lis[index] = " "
index = (index + 1) % 30
print(lis)
题目三:
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(简单的多次循环、遍历)
num = [1,2,3,4]
sum = []
for i in num:
for j in num:
for x in num:
if i != j and i != x and j != x:
sum.append(str(i)+ str(j)+ str(x))
new_sum = list(set(sum))
print(len(new_sum))
new_sum.sort()
for y in new_sum:
print(y)
以上题目代码写的不是很简洁,大家可以自己尝试优化