Python练习题

【程序 1】
题目:有 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

if __name__ == '__main__':
    count = 0
    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):
                if (i!=j) and (j!=k) and (k!=i):
                    count = count +1
                    num = i*100 + j*10 + k
                    print(num)
                    #print('{}'.format(i) + '{}'.format(j) + '{}'.format(k))
    print(count)

使用 permutations函数

import itertools
if __name__ == '__main__':
    items = "1234"
    count = 0
    for item in itertools.permutations(items, 3):
        count += 1
        if count % 4:
            print("".join(item), end=" | ")
        else:
            print("".join(item))
    print(count)

【程序 3】
题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

import math
if __name__ == '__main__':
    for i in range(100000):
        x = int(math.sqrt(i + 100))
        y = int(math.sqrt(i + 168))
        if (x * x == (i + 100)) and (y * y == (i + 168)):
            print(i)

    for i in range(100000):
        if math.sqrt(i + 100) - math.floor(math.sqrt(i + 100)) == 0:
            if math.sqrt(i + 168) - math.floor(math.sqrt(i + 168)) == 0:
                print(i)

【程序 4】
题目:输入某年某月某日,判断这一天是这一年的第几天?

注意:闰年:能被4整除但是不能被一百整除 2、能被四百整除。
闰年的2月份有29天,平年的2月份只有28天。

if __name__ == '__main__':
    year = int(input("please input year:"))
    month = int(input("please input month:"))
    day = int(input("please input day:"))
    sum = 0
    mon = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
    if 0 <= month <= 12:
        sum = sum + mon[month - 1]
    else:
        print("month error!")
    sum = sum + day
    if (year % 400 == 0) or ((year % 100 != 0) and (year % 4 == 0)):
        if month > 2:
            sum = sum + 1
    print("it is %dth day.", sum)

【程序 5】
题目:输入三个整数 x,y,z,请把这三个数由小到大输出。

if __name__ == '__main__':
    x = int(input("please input x:"))
    y = int(input("please input y:"))
    z = int(input("please input z:"))
    if(x>y):
        if(y>z):
            print(z,y,x);
        else:
            if(x>z):
                print(y,z,x);
            else:
                print(y,x,z);
    else:
        if(x>z):
            print(z,x,y);
        else:
            if(z>y):
                print(x,y,z);
            else:
                print(x,z,y);
#方法二
    if y > x:
        if z > y:
            z, x = x, z
        else:
            if x > z:
                y, x = x, y
            else:
                x, y, z = y, z, x
    else:
        if z > x:
            x, y, z = z, x, y
        else:
            if z > y:
                z, y = y, z
    print(z, y, x)

【程序 8】
题目:输出 9*9 口诀表。

if __name__ == '__main__':
    for i in range(1, 10):
        for j in range(1, i+1):
            print("{0}*{1}={2:<4}".format(i, j, i*j), end='')
        print()
    print()
#方式二
    thisList = [0] * 9
    for inedx in range(9):
        thisList[inedx] = list('0' for _ in range(9))

    for i in range(1, 10):
        for j in range(1, i + 1):
            thisList[i - 1][j - 1] = "{0}*{1}={2:<4}".format(j, i, i * j)

    for i in range(9):
        for j in range(9):
            if (thisList[j][i] != '0'):
                print(thisList[j][i], end='')
            elif (thisList[j][i] == '0'):
                print(str(' ' * 8), end='')
        print()
1*1=1   
2*1=2   2*2=4   
3*1=3   3*2=6   3*3=9   
4*1=4   4*2=8   4*3=12  4*4=16  
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  

1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9   
        2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18  
                3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27  
                        4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36  
                                5*5=25  5*6=30  5*7=35  5*8=40  5*9=45  
                                        6*6=36  6*7=42  6*8=48  6*9=54  
                                                7*7=49  7*8=56  7*9=63  
                                                        8*8=64  8*9=72  
                                                                9*9=81

【程序 11】
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

import copy
if __name__ == '__main__':
    # 3个月  1成熟  0大  0中  1小
    # 4个月  1成熟  0大  1中  1小
    # 5个月  1成熟  1大  1中  1小
    # 6个月  2成熟  1大  1中  2小
    # 7个月  3成熟  1大  2中  3小
    # 8个月  4成熟  2大  3中  4小
    # 9个月  6成熟  3大  4中  6小
    list = [1, 0, 0, 0]
    list1 = [0, 0, 0, 0]
    sum1 = 0
    x = int(input("请输入月份:"))
    for i in range(x + 1):
        if i < 3:
            sum1 = 1
        else:
            list1[2] = list[3]
            list1[1] = list[2]
            list1[0] = list[1] + list[0]
            list1[3] = list1[0]
            list = copy.copy(list1)
            print("list1:", list1)
            sum1 = sum(list1)
    print("兔子总数为:", sum1)
#斐波那契数列
    month = int(input('繁殖几个月?: '))
    month_1 = 1
    month_2 = 0
    month_3 = 0
    month_elder = 0
    for i in range(month):
        month_1, month_2, month_3, month_elder = month_elder + month_3, month_1, month_2, month_elder + month_3
        print('第%d个月共' % (i + 1), month_1 + month_2 + month_3 + month_elder, '对兔子')

【程序 12】
题目:判断 101-200 之间有多少个素数,并输出所有素数。

素数的定义:只能被1以及自身整除的数
注意!!若x<2,那么x一定不是素数!!,因为最小的素数是2!

if __name__ == '__main__':
    l = []
    for i in range(101, 200):
        for j in range(2, i - 1):
            #能被除了一和自身的数整除,说明不是素数
            if i % j == 0:
                break
        else:
            l.append(i)
    print(l)
    print("总数为:%d" % len(l))

【程序 13】
题目:打印出所有的“水仙花数” ,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153 是一个“水仙花数” ,因为 153=1 的三次方+5的三次方+3的三次方。

if __name__ == '__main__':
    count = 0
    for i in range(100, 1000):
        f = i
        # 提取百位数
        a = int(f / 100)
        # 提取十位数
        f -= a * 100
        b = int(f / 10)
        # 提取个位数
        c = f - b * 10

        # 判断是否是水仙花数
        if a ** 3 + b ** 3 + c ** 3 == i:
            print(i,"=","{}**3 + {}**3 + {}**3".format(a,b,c))
            count += 1
    print("共有 %d 个水仙花数" % count)

【程序 14】
题目:将一个正整数分解质因数。例如:输入 90, 打印出 90=233*5 。

def prime_factor(n):
    result = []
    if n <=0:
        return '请输入为正整数!!!'
    if n == 1:
        return '1无法被分解'

    print(n, '=', end="")
    for i in range(2, n + 1):
        while n % i == 0:  # 能除尽就继续除,除不尽就跳到 for 循环除下一个数
            if i == n:
                result.append(i)
                print(i, end="")
                break
            result.append(i)
            print(i, end="*")
            n = n / i
    print('')
    return result

if __name__ == '__main__':
    n = int(input("请输入一个正整数:"))
    print(prime_factor(n))

你可能感兴趣的:(练习,python,练习题)