第一个是打出一个[1,20]范围的随机10个数字的数列,并且给出重复的数字和重复了多少次。刚看到题,我就不假思索的先写了两个嵌套for循环出来,接着问题就来了,因为重复的数字在后面再次出现时又会遍历一遍,再次打印出来。
所以我索性这样干,每当有数字重复时,把这个数字放进一个列表,在下次外层循环开始执行时判断这次判断的这个数字是否在那个列表里,如果在,直接Continue跳出本次循环,无则继续执行。在我目前的水平来看,我个人还是对我这段代码比较满意的。
随机数列求重
#!/usr/bin/python3
import random
l1=[]
for i in range(10):
l1.append(random.randint(1,20))
print(l1)
l2=[]
for j in range(len(l1)):
count=0
if l1[j] in l2: #去重
continue #去重
for k in range(len(l1)):
if j==k :
continue
if l1[j]==l1[k]:
count=count+1
l2.append(l1[j]) #把统计过的放进一个列表里
if count!=0:
print("重复的是",l1[j],",重复",count,"次。")
if l2 == [] :
print("没有重复的。")
第二个则是杨辉三角的问题,一开始我并没有搞清楚规律,想着先把前两行打印出来,第三行开始再在循环里打印,但是这样子的时候,代码就会很复杂,并且有很多bug。这时我的注意力就放在了杨辉三角上,而不是去改代码bug。

反复钻研后我发现我之前的想法太愚蠢了,直接在循环里加入一个if判断语句就可以解决,并且这个if语句也是求下面行数时必不可少的。再后来就是循环里的循环条件又让我思考了好一会儿,因为我代码写的是用户输入多少行的,而列表里的索引又是从0开始算的,所以在两个循环里条件不能相同,虽然杨辉三角行数和当前行有多少个数字是相等的,但是还是必须修改循环条件,从1开始循环,最终程序得到完善,执行出了期望的结果。
杨辉三角
#!/usr/bin/python3
l1=[[]]
n=int(input("请输入行数:"))
for i in range(1,n+1):
l1.append([])
for j in range(i):
if j == 0 or j == i-1:
l1[i].append( 1 )
else :
l1[i].append( l1[i-1][j-1] + l1[i-1][j] )
print( l1[-1] )
本文探讨了如何生成一个包含1到20的随机数列,并找出其中的重复数字及其出现次数。作者避免了使用双层循环导致的重复计算问题,通过将已出现的数字存储在列表中来优化算法。此外,文章还详细介绍了解决杨辉三角问题的过程,包括初始尝试的错误、发现的规律以及最终实现的简洁解决方案,强调了在循环条件和if判断语句中的思考与调整,成功输出了用户指定行数的杨辉三角形。
2176

被折叠的 条评论
为什么被折叠?



