python小代码(一)

数字组合:
#题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
x=0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            print i*100+j*10+k,
            x=x+1
print "\nTotal:",x

分解质因数:
#题目:将一个正整数分解质因数。
#例如:输入90,打印出90=2*3*3*5
n=input('Input number:')
def func(n):
    i=2
    a=n
    while i
func(n)
解析:其中if语句输出的是最后一个质因数。这里要注意“i=1”,如果漏掉,i会一直加1,漏掉质因数。

完全平方数:
#题目:一个整数(10万以内),它加上100后是一个完全平方数,
#再加上168又是一个完全平方数,请问该数是多少?
import math
i=1
while i
解析:这里要注意long,可以写为int,如果什么都不写,x,y就有可能是浮点数,输出的i值也会相应增多。

水仙花数:
#题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
#其各位数字立方和等于该数本身。
#例如:153是一个“水仙花数”,
#因为153=1的三次方+5的三次方+3的三次方。
#这里只判断在100到999之间数,增加for嵌套即可增加数值范围
for i in range(1,10):
    for j in range(0,10):
        for k in range(0,10):
            if i*100+j*10+k==i*i*i+j*j*j+k*k*k:
                print i*100+j*10+k,

求序列和:
#求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
#例如2+22+222+2222+22222(此时共有5个数相加),
#几个数相加由键盘控制
x=input('Input a data:')
n=input('Input number:')

def func(x,n):      #n为个数
    i=0
    b=0
    a=x
    while i

解析:这时,我们可以得到这个序列的和。为了输出计算的式子,我加了几条语句,如下:

def func(x,n):       #n为个数
    i=0
    b=0
    a=x
    while i


找完数:
#一个数如果恰好等于它的因子之和,这个数就称为“完数”。
#例如6=1+2+3.编程找出1000以内的所有完数。
def func(n):
    i=1
    a=0
    while i

猴子吃桃问题:
#猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,
#又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
#以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,
#见只剩下一个桃子了。求第一天共摘了多少。
i=1
s=1
while i
解析:红色标注处写为s = (s+1)*2可能会更好理解一些