python练习题6

题目一:

打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: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)

以上题目代码写的不是很简洁,大家可以自己尝试优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值