题目一: 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: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) 以上题目代码写的不是很简洁,大家可以自己尝试优化