昆仑子牙练AI:人工智能从开发到实战
上QQ阅读APP看书,第一时间看更新

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()