前言

PTA程序设计类教学平台—def函数
运行环境Python3.6
小白进阶之路的学习与记录之------列表

题目:

编写一个Python函数,生成一个m行n列的元素值不大于20的随机数矩阵(二维列表)。 提示:使用random.randint()函数来生成随机数。

函数接口定义:

def generateMatrix(m,n)

m: 行数,int, 1 < m < 100; n: 列数, int, 1 < n < 100.

裁判测试程序样例::
import random

m = int(input())
n = int(input())
r = generateMatrix(m,n)
p = True
for i in range(m):
    for j in range(n):
        if r[i][j] > 20:
            p = False
            break
if m > 3 and n > 3:
    if r[0][0] == r[2][2] and r[1][1] == r[1][2] and r[0][2] == r[3][0]:
        p = False

print(p)
#测试程序的输出:True
测试输入样例::

在这里给出一组输入。例如:

5
3

测试程序输出:

True

答案:

PTA:

def generateMatrix(m,n):
    return [[random.randint(0,20) for x in range(n)] for y in range(m)]

Pycharm完整代码:

import random
r = []
def generateMatrix(m, n):
    return [[random.randint(0, 20) for x in range(n)] for y in range(m)]


m = int(input())
n = int(input())
r = generateMatrix(m,n)
p = True
for i in range(m):
    for j in range(n):
        if r[i][j] > 20:
            p = False
            break
if m > 3 and n > 3:
    if r[0][0] == r[2][2] and r[1][1] == r[1][2] and r[0][2] == r[3][0]:
        p = False

print(p)

代码解析:

首先我们得掌握列表的知识

列表list:

列表(list)用来存储不同的数据类型,使用 [ ]
例如:

list = ['A','B','C']

列表增删改查:

方法\函数

用法

append

追加,在列表的尾部加入指定的元素

insert

将指定的元素插入到对应的索引位上,注意负索引(一般不使用,动的很多)

extend

将指定序列的元素依次追加的列表的尾部(合并)

pop

弹出,返回并删除指定索引位上的数据,默认删除索引为-1(最后一个)的数据

remove

从左往右删除一个指定的元素

del

删除整个列表或列表的数据,del是Python内置功能,不是列表独有

count

计数,返回要计数的元素在列表当中的个数

index

查找,从左往右返回查到的第一个指定元素的索引,如果没有找到,报错

in

查找元素是否在列表中,在输出true,否则false

reverse

顺序倒序

sort

按照ascii码表书序进行排序

二维列表
如何创建二维列表:
例如创建四行三列的列表:

a = [[0] * 3] * 4

[[0,0,0], [0,0,0], [0,0,0], [0,0,0]]

[0,0,0]
[0,0,0]
[0,0,0]
[0,0,0]
这虽然能产生3*4的二维数组,但在修改数组内容时发现:同一列的数据会同时改变时刻保持一致,如:

a[1][2]=3
 print(a)

[[0, 0, 3], [0, 0, 3], [0, 0, 3], [0, 0, 3]]

           因为list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接
           而[[]]是一个含有一个空列表元素的列表,所以[[]]3表示3个指向这个空列表元素的引用,修改任何一个元素都会改变整个列表。
完美的二维数组创建方式:
4
3:

a = [([0] * 3) for i in range(4)]

           
           
了解上面后现在就可以简单的实现了m行n列的二维列表创建了

m = int(input()) #m行
n = int(input()) #n列
a = [[0 for x in range(n)] for y in range(m)]
print(a)

再把随机数生成函数放入上面的代码里:

random.randint(区间)

import random

m = int(input())
n = int(input())
a = [[random.randint(0, 20) for x in range(n)] for y in range(m)]
print(a)

最后就只需要按题目要求定义一个 generateMatrix函数啦

def generateMatrix(m,n):
    return [[random.randint(0,20) for x in range(n)] for y in range(m)]

-END-

实现的方法有很多,本篇博客只是给新手提供一种思路。