Python编程基础案例1

196 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情一、输出 9*9 乘法口诀表。 分析:分行与列考虑,共9行9列,i控制行,j控制列。 代码:

for i in range(1,10):
    for j in range(1,i+1):
        print(str(i)+'*'+str(j)+'='+str(i*j)+' ',end="")
    print("\n")

输出结果: 99乘法表

二、获取 100 以内的质数。 分析:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2、3、5、7、11、13、17、19。 实际上,实际验证x是否有因子时,不必验证所有小于x的数,只要验证所有小于sqrt(x)+1的数就可以了。 代码:

import math
def sushu(n):
    for i in range(2,int(math.sqrt(n))+1):
        if(n%i==0):
            return 0;
if __name__ == '__main__':
    for n in range(2, 100):
        if(sushu(n)!=0):
            print(str(n)+",",end="")

输出结果: 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97, 三、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 代码:

for n in range(100,1000):
    i=int(n/100)
    j=int(n%100/10)
    k=int(n%10)
    if(i**3+j**3+k**3 == n):
        print(n)

输出结果: 153 370 371 407 四、有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 可以使用排列组合的思想设计递归或非递归程序实现,也可简单穷举搜索。 代码:

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if(i!=j and j !=k and k !=i):
                print('%d %d %d'%(i,j,k))

输出结果: 1 2 3 1 2 4 1 3 2 1 3 4 1 4 2 1 4 3 2 1 3 2 1 4 2 3 1 2 3 4 2 4 1 2 4 3 3 1 2 3 1 4 3 2 1 3 2 4 3 4 1 3 4 2 4 1 2 4 1 3 4 2 1 4 2 3 4 3 1 4 3 2

五、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 分析: 假设该数为 x。 1、则:x + 100 = n2, x + 100 + 168 = m2 2、计算等式:m2 - n2 = (m + n)(m - n) = 168 3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数 4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。 5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。 6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。 7、接下来将 i 的所有数字循环计算即可。 代码:

for i in range(2,85):
    j=168/i
    if(i%2==0 and j%2==0):
        # n=(i-j)/2
        # print(n*n-100)
        m=(i+j)/2
        print(m*m-268)

输出结果: 1581.0 261.0 21.0 -99.0 -99.0 21.0 261.0 1581.0