Python解题

1.水仙花

如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
那么问题来了,求1000以内的水仙花数(3位数)

思路一:

#-*-coding:UTF-8-*-

for i in range(100, 1000):
    a = str(i)
    b = int(a[0])
    s = int(a[1])
    g = int(a[2])
    if (i == b * b * b + s * s * s + g * g * g):
        print i

运行结果:
在这里插入图片描述
思路二:

for i in range(100, 1000):
    b = i/100
    s = (i/10)%10
    g = i%10

    if (i == b * b * b + s * s * s + g * g * g):
        print i

运行结果:
在这里插入图片描述

2.打印99乘法表
for i in range(1, 10):
    for j in range(1,10):
        if i>= j :
            print(str(i )+ "*" + str(j) + "=" + str(i*j) + "")
    print ("")

Python2.7版本,print中end函数不能用,所以打印出的均换行
在这里插入图片描述

3.list 排序和去重

a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
对列表a 中的数字从小到大排序

a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
a.sort()
print (a)

运行结果:
在这里插入图片描述
利用set去重
将列表转化为集合再转化为列表,利用集合的自动去重功能。

a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
b = list(set(a))
print (b)

运行结果
在这里插入图片描述
先排序再去重

a = [1, 6, 8, 11, 9, 1, 8, 6, 8, 7, 8]
a.sort()
print (a)

b = list(set(a))
print (b)
4.list反转与取值

如果有一个列表a=[1,3,5,7,11]
1如何让它反转成[11,7,5,3,1]
2.如果取到奇数位值的数字,如[1,5,11]

a=[1,3,5,7,11]

b = list(reversed(a))
print (b)

c = a[::-1]
print (c)

d = []
for i in range(0, len(a)):
    if i%2==0:
        d.append(a[i])

print (d)

在这里插入图片描述

5.对称数组判断

判断数组元素是否对称。例如[1,2,0,2,1],[1,2,3,3,2,1]这样的都是对称数组
用Python代码判断,是对称数组打印True,不是打印False,如:
x = [1, “a”, 0, “2”, 0, “a”, 1]

x = [1, "a",  0, "2", 0, "a",1]

for i in range(0, len(x)/2):

    if(x[i]!=x[len(x)-(i+1)]):
        print ("false")
        break
    if(i==len(x)/2-1):
        print ("true")

在这里插入图片描述

x = [1, "a",  0, "2", 0, "b",1]

for i in range(0, len(x)/2):

    if(x[i]!=x[len(x)-(i+1)]):
        print ("false")
        break
    if(i==len(x)/2-1):
        print ("true")

在这里插入图片描述

5.完全数

如果一个正整数等于除它本身之外其他所有除数之和,就称之为完全数。
例如:6是完全数,* 因为6 = 1+2+3;
下一个完全数是28 = 14+7+4+2+1。
求1000以下的完全数

for i in range(1, 1000):
    s = 0
    for j in  range(1,i-1):
        if i % j == 0 :
            s += j

    if s == i:
        print (i)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值