Python基础实践
随机数生成与排序
听子牙讲完,站在最前面的难民说道:“听恩公讲了这么多,我们已经了解Python的基础用法了。很多以前需要人来实现的,现在看来,使用Python可以更快、更好地实现,请恩公将此技能传授于我等吧!”
姜子牙将技能分解成两步:生成一个数据列表来模拟数据,然后进行排序操作。开始一个Python程序之前,我们需要通过import语句导入random库。import语句用来导入其他Python文件(称为模块),程序可使用该模块里定义的类、方法或者变量,从而达到代码复用的目的。
random.randint(a,b)生成大于等于a小于等于b的整数;random.random()生成一个在[0,1)区间上的实数;random.choice(sequence)从序列中获取一个随机元素,其中sequence在Python中不是一个特定的类型,而是泛指列表、元组、字符串等一系列的类型。如果要生成一个含有20个随机数的列表,要求所有元素不相同,并且每个元素的值介于1到100之间,则可以调用random.sample()生成不相同的随机数,如图2-9所示。
图2-9 20个随机数列表
生成随机数后,对列表进行排序可采用两种方法:用sorted(list)直接改变list和调用list的方法list.sort,如图2-10所示。
图2-10 列表排序
上面两种方法是不同的。list.sort()是class list下面的一个函数,是列表独有的;list.sort排序是在原有列表上进行的,列表本身的顺序会改变。list.sort不会返回一个新的列表,只是返回None。sorted()是Python的内置函数,它不改变原有对象的值,而是生成一个新的列表对象,并返回,它不仅能将list作为参数传递进去,还可以接收任何形式的可迭代对象,甚至是不可变序列或者生成器作为参数,不管接收何种参数,sorted()都返回一个列表。
九九乘法表
这时,一个小朋友问道:“Python可以帮我写九九乘法表吗?”
九九乘法表是一个非常考验逻辑思考能力的Python小程序,重点需要解决的是循环问题。如果我们想实现一个九九乘法表,首先需要考虑想得到的目标样式,如图2-11和图2-12所示。
图2-11 第一种样式的九九乘法表
图2-12 第二种样式的九九乘法表
根据你需要的不同的输出样式,可以选择不同的代码结构。我们来看第一种样式的九九乘法表应该如何实现:
# 第1种写法 i = 1 while i < 10: # 控制最大行数为9 j = 1 while j <= i: # 控制一行中相乘直到最大数(行数) print('%d*%d=%d\t' %(j, i, i*j) , end=('')) j +=1 print('') i +=1
通过这样的打印方式,可以得到一个如图2-11所示的乘法表。这里使用的是while循环,也可以通过for循环来实现,代码如下:
# 第2种写法 for i in range(1,10): for j in range(1,i+1): # stop=i+1,即不包括i+1,只到i print("%d*%d=%d\t"%(j,i,i*j),end='') print()