首页 > 编程语言 >浙大版PTA python程序设计 第四章题目及知识点解析整理

浙大版PTA python程序设计 第四章题目及知识点解析整理

时间:2024-06-10 23:57:30浏览次数:25  
标签:知识点 输出 python PTA 列表 range print data row

第四章

--1--

在循环中continue语句的作用是(结束本次循环)退出循环的当前迭代  √

 

带有else子句的循环如果因为执行了break语句而退出的话,会执行else子句的代码。×

因为break是跳出整个循环,所以如果循环体内有else子句,且循环是通过break退出的,那么else子句中的代码也不会被执行。

 

循环结构可以没有else子句

e.g.

for i in range(3):

    print(i)

 

下面程序的输出是3。×

lst=[34,6,7,0,0,0,9]

n=0

for i in lst:

    if i==0:

        lst.remove(i)

        n+=1

print(n)

第一次移除原索引为3的‘0’  然后原索引为456分别变为345

刚刚查过3这个索引 接下来查4即查原索引为5的‘0’并移除

后面查不到0了所以总共移除了两个0

故输出应该为2,而不是3。

 

(思考:倘若变成列表里面0不是连着的分布的,例如:

下面输出是3

lst=[0,34,6,0,7,0,9]

n=0

for i in lst:

    if i==0:

        lst.remove(i)

        n+=1

print(n)

对的

 


关于可变/不变

下面程序输出值是1。×

data=[[1]*3]*3##①

data[0][1]=45#②

print(data[2][1])#③

①处  *3是 重复引用同一个列表三次

data = [

    [1, 1, 1],  # 这三个内层列表实际上是同一个对象

    [1, 1, 1],

    [1, 1, 1]

]

②由于这三个内层列表是相同的对象,因此修改会反映在所有引用中

现在data即

data = [

    [1, 45, 1],

    [1, 45, 1],

    [1, 45, 1]

]

所以③输出45

 

 

思考:如果外面不是用*3

data = [[1] * 3 for i in range(3)]

data[0][1] = 45

print(data)  # 输出 [[1, 45, 1], [1, 1, 1], [1, 1, 1]]

print(data[2][1])  # 输出 1

 

 

 

下面程序中 ,i的循环终值是__________。

for  i  in  range(10):

      print(i)

9

(但是如果是像while i<5:这种,终值就是5 )

 

下面程序中语句print(i*j)共执行了___________________次。

for i in  range(5):

       for j in range(2,5):

             print(i*j)

每次循环的具体输出:

 

1. 当 `i = 0` 时,内层循环 `j` 取值为 `[2, 3, 4]`:

   - `0 * 2 = 0`

   - `0 * 3 = 0`

   - `0 * 4 = 0`

 

2. 当 `i = 1` 时,内层循环 `j` 取值为 `[2, 3, 4]`:

   - `1 * 2 = 2`

   - `1 * 3 = 3`

   - `1 * 4 = 4`

 

3. 当 `i = 2` 时,内层循环 `j` 取值为 `[2, 3, 4]`:

   - `2 * 2 = 4`

   - `2 * 3 = 6`

   - `2 * 4 = 8`

 

4. 当 `i = 3` 时,内层循环 `j` 取值为 `[2, 3, 4]`:

   - `3 * 2 = 6`

   - `3 * 3 = 9`

   - `3 * 4 = 12`

 

5. 当 `i = 4` 时,内层循环 `j` 取值为 `[2, 3, 4]`:

   - `4 * 2 = 8`

   - `4 * 3 = 12`

   - `4 * 4 = 16`

 

外层是5次 内层是3次     总共15次

 

 

 

执行下面程序产生的结果是___________________。

x=2;y=2.0   #分号可把两个语句写在一行

if(x==y):

   print("相等")

else:

   print("不相等")

 

相等

注:Python 在比较两个不同类型的数值时会进行类型转换,这种转换称为“隐式类型转换”或“类型强制”。在这种情况下,Python 会将整数 x 转换为浮点数(如果需要的话),或者将浮点数 y 转换为整数(如果需要的话),以便进行比较。由于 2 和 2.0 的数值相同

 

注意 如果for i in range(10,0)这种步长非负并且参数1比参数2大的,range就不产生任何值

for i in range(1,5):

    j=0

    while j<i:

       print(j,end=" ")

       j+=1

    print()

会输出怎样的呢↓

0

0 1

0 1 2

0 1 2 3

 

下面程序运行后输出是

a = [1, 2, 3, 4, [5, 6], [7, 8, 9]]  #一个列表

s = 0

for row in a:                           #遍历a中的元素

       if type(row)==list:          #检查元素是否为列表

            for elem in row:        #处理嵌套列表

               s += elem

       else:                                       #处理非列表元素

            s+=row

print(s)

 

所以即算列表和 为45

 

 

下面程序运行后输出是_________。

l3=[i+j for i in range(1,6) for j in range(1,6)]

print(sum(l3))

 

嵌套循环 相当于

for i in range(1, 6):

    for j in range(1, 6):

        l3.append(i + j)

先固定一个i比如说i为1,j从1到5,生成i+j即2,3,4,5,6

接下来i是2,j从1到5……以此类推

总和就是2加到6 + 3加到7 + 4到8 + 5到9 + 6到10

即20 + 25 + 30 +35 + 40   即150

 

 

下面程序运行后输出是_________。

l3=[[(i,j) for i in range(1,6)] for j in range(1,6)]

print(l3[2][1][0])

 

分析:这个列表生成式创建了一个5x5的二维列表,其中每个元素都是一个元组 (i, j)。外层列表生成式遍历 j 从 1 到 5,内层列表生成式遍历 i 从 1 到 5。

l3 = [

    [(1, 1), (2, 1), (3, 1), (4, 1), (5, 1)],  # 当 j = 1

    [(1, 2), (2, 2), (3, 2), (4, 2), (5, 2)],  # 当 j = 2

    [(1, 3), (2, 3), (3, 3), (4, 3), (5, 3)],  # 当 j = 3

    [(1, 4), (2, 4), (3, 4), (4, 4), (5, 4)],  # 当 j = 4

    [(1, 5), (2, 5), (3, 5), (4, 5), (5, 5)]   # 当 j = 5

]

 

所以是 2

 

 

下面程序运行后,最后一行输出是_________。

n = 3

m = 4

a = [0] * n                  #a = [0, 0, 0]

for i in range(n):

    a[i] = [0] * m         #在每次迭代中将 a[i] 赋值为一个长度为 4 的列表 [0, 0, 0, 0]

    print(a[0][2])

分析:

前三行

n 被设置为 3,表示列表 a 将有3个子列表。

m 被设置为 4,表示每个子列表将有4个元素。

a = [0] * n 创建一个包含 3 个元素的列表,每个元素初始为 0。

迭代分析:

第一轮i=0     a[0] 赋值为 [0, 0, 0, 0]    所以a = [[0, 0, 0, 0], 0, 0]   输出0

第二轮i=1     a[1] 赋值为 [0, 0, 0, 0]    所以a = [[0, 0, 0, 0], [0, 0, 0, 0], 0]  输出0

第三轮i=2    a[2] 赋值为 [0, 0, 0, 0]     所以a = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 输出0

最终输出

0

0

0

所以答案为 0

 

关于列表的引用

下面程序的输出是

row=[0]*3                   #创建列表[0, 0, 0]

data=[row,row,row]    #创建了一个二维列表 data,其每一行都引用同一个 row 列表

data[2][2]=7          # data 的第三行第三列的值设置为 7。由于所有行都引用同一个 row 列表

                      #因此这个操作会影响到所有引用 row 列表的地方

print(data[0][2])        

 

初始

row = [0, 0, 0]

data = [

    row,  # [0, 0, 0]

    row,  # [0, 0, 0]

    row   # [0, 0, 0]

]

 

data[2][2] = 7   相当于   row[2] = 7

现在

data = [

    [0, 0, 7],

    [0, 0, 7],

    [0, 0, 7]

]

所以结果是 7

 

 

 

 

下面程序的输出是

data=[[0]*3] *3 #使用的是 [[0] * 3] * 3,所以 data 中的3个子列表实际上是同一个列表的引用

data[2][2]=7    #由于所有行都引用同一个列表,这个操作会影响所有引用该列表的地方

print(data[0][2])

分析:所以答案是 7

 

 

 

下面程序的输出是

data=[]

for i in range(3):

    data.append([0]

data[2][2]=7

print(data[0][2])

分析:使用循环 for i in range(3) 遍历3次,每次迭代中,向 data 添加一个包含3个元素 [0, 0, 0] 的新列表。这样,data 中的每一行都是独立的列表

data[2][2] = 7     这个修改只会影响 data[2]

初始

data = [

    [0, 0, 0],  # 第一次迭代添加的列表

    [0, 0, 0],  # 第二次迭代添加的列表

    [0, 0, 0]   # 第三次迭代添加的列表

]

修改后

data = [

    [0, 0, 0],

    [0, 0, 0],

    [0, 0, 7]

]

所以结果是0

 

 

下面程序的输出是

mat=[[i*3+j+1 for j in range(3)] for i in range(5)]

mattrans=[[row[col] for row in mat] for col in range(3)]

print(mattrans[1][3])

分析:①mat = [[i*3 + j + 1 for j in range(3)] for i in range(5)]这一行

外层循环遍历 i 从 0 到 4,共 5 次(生成 5 行)。

内层循环遍历 j 从 0 到 2,共 3 次(生成 3 列)。

每个元素的值为 i * 3 + j + 1。

具体生成的mat矩阵如下

mat = [

    [1, 2, 3],     # 当 i = 0

    [4, 5, 6],     # 当 i = 1

    [7, 8, 9],     # 当 i = 2

    [10, 11, 12],  # 当 i = 3

    [13, 14, 15]   # 当 i = 4

]

②mattrans = [[row[col] for row in mat] for col in range(3)]这一行

外层循环遍历 col 从 0 到 2(生成转置后的3行)。

内层循环遍历 mat 中的每一行,提取第 col 列的元素,形成转置后的列。

mattrans = [

    [1, 4, 7, 10, 13],  # 第0列转成第0行

    [2, 5, 8, 11, 14],  # 第1列转成第1行

    [3, 6, 9, 12, 15]   # 第2列转成第2行

]

即转置列表     输出是11

 

未经允许 不得转载

 

标签:知识点,输出,python,PTA,列表,range,print,data,row
From: https://blog.csdn.net/like_cs_810/article/details/139584270

相关文章

  • python: 压缩图片
    pipinstallimageioimage=imageio.imread("1.jpg")imageio.imwrite("output_image.webp",image,"WEBP") #代码示例:使用Python的Keras库构建Autoencoder模型fromkeras.modelsimportModelfromkeras.layersimportInput,Den......
  • Linux下安装python3.10.12环境
    安装python3编程环境检查是否安装python3python3-V安装python3依赖sudoyum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devellibffi-devel下载python3资源包......
  • 【Python核心数据结构探秘】:元组与字典的完美协奏曲
    文章目录......
  • 【python】时间和日期
    1.datetime模块概述Python的datetime模块提供了用于处理日期和时间的类和函数。主要类包括datetime、date、time、timedelta和tzinfo(与时区有关)。2.主要类及其功能2.1datetime类datetime类是最常用的类之一,它表示一个具体的日期和时间(年、月、日、时、分、秒、微秒)。......
  • 【python】os模块详解
    Python的os模块提供了与操作系统交互的功能。它提供了很多函数,用于读取或修改系统目录和文件、运行系统命令、处理系统环境变量等。以下是一些常用的os模块函数及其简要说明:一、目录和文件操作获取当前工作目录os.getcwd()importoscurrent_dir=os.getcwd()pr......
  • Python异常处理的几种方法
    Python的异常处理语句主要包括以下几个关键字:try/excepttry块包含可能会引发异常的代码。except块则包含用于处理这些异常的代码。try:#尝试执行的代码块result=10/0exceptZeroDivisionError:#当发生ZeroDivisionError异常时执行的代码块......
  • python大学生创新创业大赛竞赛志愿者招募平台_s64ag
    大学生作为我国的年轻高级知识人群,有着较为丰富的知识储备和相较于其他高级知识份子所欠缺的创造力,是符合在我国十三五规划的创业主要人群。但因为大学生这个群体社会实践经验与能力的欠缺,与创业的成功要素所矛盾,导致大部分大学生创业在初期就自行夭折,使大学生创业成为了国家......
  • 用python进行选岗
    importpandasaspdfromopenpyxlimportworkbook#新建一张表存储提取数据wb=workbook.Workbook()#使用pandas的read_excel函数,设置参数sheet_name为None来获取所有sheet的名称sheet_names=list(pd.read_excel('filename.xls',sheet_name=None).keys())forsh......
  • pydispatch:Python中的事件驱动编程
    pydispatch是一个轻量级的事件调度器,广泛应用于实现观察者模式。它允许对象之间通过事件进行通信,而无需直接引用彼此,从而实现代码的模块化和可维护性。1.安装pydispatch使用pip安装pydispatch库:pipinstallpydispatch 2.基本概念pydispatch库中有3个核心概念:信号(Sig......
  • Python 潮流周刊#55:分享 9 个高质量的技术类信息源!
    大家好,我是猫哥,今天给大家分享几个高质量的技术类信息源。本文分享的信息源都是周刊类型的,所谓周刊类,就是以固定每周的频率更新,每期分享很多精华内容的链接。它的特点是信息密度极高,可以节省你去查找信息的时间,高效的学习者都会喜欢这类内容。如果不是看了这篇文章,我猜你可能想......