python 的练习题一

    python 的练习题

习题一:用户输入一个数字。
要求:    #      判断是几位数。
              #      打印每一位数字及其重复的次数。
              #      依次打印每一位数字,顺序个,十,百,依次打印。
实现代码如下:
a=str(int(input('请输入一个正整数')))
if a.lstrip('-'):
    lena=len(a)-1
else:
    lena=len(a)
    print('数字{}是{}位数'.format(a,lena))
for i in a :
    if i =='-':
        continue
    print('数字{}重复{}次'.format(i,a.count(i)))
for i in reversed(a):
    print('数字:{}是{}位数依次打印位数,分别是:{}'.format(a,lena,i))

效果图:

#习题2:求杨辉三角第M行第K个元素[实现查找元素:]
#提示:第M行有M项,M是正整数,,因此K一定不会大于M
#第N行的M个数,可表示为C(n-1,m-1),即为从n-1个不同元素中取M-1个元素的组合数。

实现代码如下:

n=int(input('请输入要显示的行数:'))
k=int(input('请输入要显示元素的索引号:'))
if n<= k:
    print('你找的第{}行索引号为{}的元素未找到!'.format(n,k))
else:
    for i in range(n):
        newline = [1]
        if i ==0:  
            continue 
        for j in range(i-1):
            val=pre[j]+ pre[j+1]
            newline.append(val)
        newline.append(1) 
        pre = newline
    print(pre)
    newline[k-1]=newline[k]
    print('你找的第{}行索引号为{}的元素是{}.'.format(n,k,newline[k]))

效果图:

习题3:给个3X3的矩阵,求对应的转置矩阵. (矩阵2X2同理。)

实现代码如下:

#给个3X3的矩阵,求他的转置矩阵。
m=[[1,2,3],[4,5,6],[7,8,9]]
print('{}{}{}'.format(m[0],m[1],m[2]))
for i in range(len(m)):
    for j in range(i):
        m[i][j],m[j][i] = m[j][i],m[i][j]
print('{}{}{}'.format(m[0],m[1],m[2]))
效果图如下:

 

习题4:随机产生10 个数字。
要求:
#     每个数字取植范围【1,20】
#     统计重复的数字有几个?分别是什么?
#     统计不重复的数字有几个?分别是什么?

#     举例:11,7,5,11,6,7,4,其中2个数字7和11重复,3个数字4,5,6没有重复过。

实现代码如下:

方法1:

import random                         #载入函数 
#生成一个列表。
lst_a = [1]*10                      
for i in range(10):                     
    lst_a[i]=random.randint(1,20)     
print('随机10个正整数,分别是:{}'.format(lst_a))                        
#统计出列表lst_a里元素出现的次数。
sudmsf = [0]*20
for i in range(10):
    sudmsf[lst_a[i]-1] += 1
#print('lst_a元素{}分别对应出现的次数{}'.format(lst_a,sudmsf))
#通过判断分别列出出现多次的和单次的元素.
seta = set()
setb = set()
for j in range(20):
    if sudmsf[j] >= 2:
        seta.add(j+1)
        alongeth=len(seta)
    if sudmsf[j] == 1:
        setb.add(j+1)
        blongeth=len(setb)
print('打印出现多次的元素有{}个,分别是:{}'.format(alongeth,seta))
print('打印出现单次的元素有{}个,分别是:{}'.format(blongeth,setb))

效果图如下:

方法2:(学习同事代码)

import random

lst_num = []
for i in range(10):
    num = random.randint(1,20)
    lst_num.append(num)
    lst_num.sort()   #为了下面的结果看起来更明显
print('The random number is: {}'.format(lst_num))

lst_zero = [0] * 20   # 用于计算数字是否重复
lst_same_num = []     # 用于存放重复的数字
lst_diff_num = []     # 用于存放不重复的数字
for j in range(20):
    lst_zero[j] = lst_num.count(j+1)
    if lst_zero[j] > 1:   # 过滤重复的数字
        lst_same_num.append(j+1)
    elif lst_zero[j]:    # 过滤不重复的数字
        lst_diff_num.append(j+1)
print('The same number have {}. They are {}.'.format(len(lst_same_num),lst_same_num))
print('The different number have {}. They are {}.'.format(len(lst_diff_num),lst_diff_num))

效果图如下:

                                                                                                                                                        by phantom


猜你喜欢

转载自blog.csdn.net/yzzsjc2008/article/details/79772723