内容正文:
少儿编程课
神奇的排序
增强运算符
/=
-=
*=
+=
a=1
a/=1
print(a)
a=1
a-=1
print(a)
a=1
a*=1
print(a)
a=1
a+=1
print(a)
双重循环语句
for 变量1 in 可迭代内容:
循环体1…
for 变量2 in 可迭代内容:
循环体2…
for x in range(1,10):
line=''
for y in range(1,x+1):
line += str(y)+'*'+str(x)+'='+str(x*y)+' '
print(line)
排序问题
按大小顺序排列数字
利用循环生成一个有5个数字的列表。
2. 将数字按照从小到大的顺序排列
例如:
列表中的数字为: [ 83, 20, 51, 82, 55 ],
排序后的数字为: [ 20, 51, 55, 82, 83 ]
按大小顺序排列数字
排序需要进行多轮,在每一轮排序中都会挑选出候选数字中最大的一个,放到本轮排序所有数字的最后。
第一轮排序
待排序的数字为全部5个数字,比较时采用两两比较法。两个数字中,如果左边数字大于右边数字,则两个数字互换;如果左边数字不大于右边数字,则不互换位置。
第一轮第一次比较[20, 83, 51, 82, 55 ],因为左侧的83大于20,所以两者交换,此时数字顺序为:
[20, 83, 51, 82, 55 ]
第一轮第二次比较[20, 83, 51, 82, 55 ],因为左侧的83大于51,所以两者交换,此时数字顺序为:
[20, 51, 83, 82, 55 ]
第一轮第三次比较[20, 51, 83, 82, 55 ],因为左侧的83大于82,所以两者交换,此时数字顺序为:
[20, 51, 82, 83, 55 ]
第一轮第四次比较[20, 51, 82, 83, 55 ],因为左侧的83大于55,所以两者交换,此时数字顺序为:
[20, 51, 82, 55, 83 ]
第二轮排序
经过了第一轮排序后,我们已经把5个数字中最大的数字放到了最后,第二轮待排序的数字为剩下的4个数字。比较时继续采用两两比较法。
第二轮第一次比较[20, 51, 82, 55, 83 ],因为左侧的20不大于51,所以两者不交换
第二轮第二次比较[20, 51, 82, 55, 83 ],因为左侧的51不大于82,所以两者不交换
第二轮第三次比较[20, 51, 82, 55, 83 ],因为左侧的82大于55,所以两者交换,此时数字顺序为:
[20, 51, 55, 82, 83 ]
第三轮排序
经过了第二轮排序后,我们已经把5个数字中最大的2个数字放到了最后,第三轮待排序的数字为剩下的3个数字。比较时继续采用两两比较法。
第三轮第一次比较[20, 51, 55, 82, 83 ],因为左侧的20不大于51,所以两者不交换
第三轮第二次比较[20, 51, 55, 82, 83 ],因为左侧的51不大于55,所以两者不交换
第四轮排序
经过了第三轮排序后,我们已经把5个数字中最大的3个数字放到了最后,第四轮待排序的数字为剩下的2个数字。比较时继续采用两两比较法。
第四轮第一次比较[20, 51, 55, 82, 83 ],因为左侧的20大于51,所以两者不交换
最终,5个数字四轮比较就可以得到最终的结果[ 20, 51, 55, 82, 83 ],每一轮两两比较的次数各不相同,每一轮比较次数都在减少。
代码实现
from random import randint
m=[]
for x in range(5): #生成有5个随机数的列表
n=randint(1,100)
m.append(n)
print(m) #打印生成的列表
for x in range(4): #需要4轮交换
for y in range(4-x): #每轮交换的次数都在减少
if m[y]>m[y+1]: #如果左侧大于右侧数字,两者交换
m[y],m[y+1]=m[y+1],m[y]
print(m)
按从大到小排序数字
利用循环生成一个有10个数字的列表。
按数字从大到小的顺序排列。
例如:
列表中数字:[ 70, 35, 85, 16, 9, 21, 37, 33, 60, 39 ]
排序后数字:[ 85, 70, 60, 39, 37, 35, 33, 21, 16, 9 ]
代码实现
from random