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