浙大版PTA python程序设计 第七章题目解析

一、判断题

1. 以"w"模式打开的文件无法进行读操作。
   - 正确。以 "w" 模式(写入模式)打开文件时,只允许操作,不能进行操作。如果尝试读操作会引发错误。

2. Pandas库是用于图像处理的库。
   - 错误。Pandas库主要用于数据处理和分析,不是用于图像处理的。图像处理通常使用Pillow或OpenCV等库。

3. read函数返回的是列表。
   - 错误。`read`函数读取文件的全部内容,并以字符串形式返回,而不是列表。

4. readlines函数返回的是列表。
   - 正确。`readlines`函数读取文件的所有行,并以列表形式返回,每行作为列表中的一个元素。

5. DataFrame是Pandas模块的一种数据类型。
   - 正确。`DataFrame`是Pandas库中用于表示二维数据表的主要数据结构。

6. Json数据格式只能用于Javascript语言。
   - 错误。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,不仅限于JavaScript语言,广泛应用于多种编程语言中。

7. close函数用于文件关闭。
   - 正确。`close`函数用于关闭文件对象,释放与文件相关的资源

8. Plotly模块可以画柱状图。
   - 正确。Plotly模块功能强大,可以用于绘制多种图表,包括柱状图。

9. sys.stdin表示标准输入。
   - 正确。`sys.stdin`是Python中表示标准输入流的对象,通常用于从控制台读取输入

10. 第三方模块要先安装才能使用。
    - 正确。第三方模块通常不包含在Python的标准库中,需要通过`pip`或其他包管理工具先安装才能使用。

11. 

    import plotly.graph_objects as go

    fig = go.Figure(data=[go.Table(header=dict(values=['A Scores', 'B Scores']),
                                   cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]))
                          ])     
                                             
    fig.show()

 上面程序的输出是下图。

764f72597af63f53b61f4869b1007c86.jpeg


       - 正确。这段代码使用Plotly库绘制了一个表格,表格头是 'A Scores' 和 'B Scores',对应的值是两个列表。输出确实是一个表格。

代码分析:

  • 导入模块

    • import plotly.graph_objects as go: 导入Plotly中的graph_objects模块并命名为go
  • 创建Figure对象

    • fig = go.Figure(...): 创建一个Figure对象,表示一个可视化图表。
  • 添加数据

    • data=[go.Table(...)]: 添加一个Table(表格)对象到Figure中。
    • header=dict(values=['A Scores', 'B Scores']): 定义表格的头部,包含两列,列标题分别是 'A Scores' 和 'B Scores'。
    • cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]): 定义表格的单元格内容。第一个列表 [100, 90, 80, 90] 是 'A Scores' 列的分数,第二个列表 [95, 85, 75, 95] 是 'B Scores' 列的分数。
  • 显示图表

    • fig.show(): 显示创建的图表。

12. 表达式 "3/0" 会引发“ValueError”异常。
    - 错误。表达式 `3/0` 会引发 `ZeroDivisionError` 异常,而不是 `ValueError`。

13. 带有else子句的异常处理结构,如果不发生异常则执行else子句中的代码。
    - 正确。在异常处理结构中,`else`子句只有在没有发生异常时才会执行

14. 在异常处理结构中,不论是否发生异常,finally子句中的代码总是会执行的。
    - 正确`finally`子句中的代码无论是否发生异常,总是会执行,常用于清理资源。

 

二、单选题

1.下面程序的输出是什么?

try:
    x=float("abc123")
    print("The conversion is completed")
except IOError:
    print("This code caused an IOError")
except ValueError:
    print("This code caused an ValueError")
except:
    print("An error happened")

A.The conversion is completed

B.This code caused an IOError

C.An error happened

D.This code caused an ValueError

代码分析:

try:  # 开始一个尝试块,用于尝试执行可能引发错误的代码
    x=float("abc123")  # 尝试将字符串 "abc123" 转换为浮点数,这会引发 ValueError,因为 "abc123" 不是一个有效的数字
    print("The conversion is completed")  # 如果转换成功,执行该行代码
except IOError:  # 开始一个异常处理块,用于捕捉 IOError,这种错误通常与输入/输出操作有关
    print("This code caused an IOError")  # 如果发生了 IOError,执行该行代码
except ValueError:  # 开始另一个异常处理块,用于捕捉 ValueError,这种错误通常发生在某些操作或函数接收到不合适的值
    print("This code caused an ValueError")  # 因为尝试转换一个非数字字符串abc123为浮点数,这行代码块将被执行
except:  # 这是一个通用异常处理块,它会捕捉所有类型的错误
    print("An error happened")  # 如果有任何类型的错误发生,这行代码会执行

这段Python代码展示了异常处理的基本结构,并且Python中的异常处理是按照从上到下的顺序进行的。
在执行这段代码时,因为 "abc123" 不能被转换为浮点数,所以会发生 `ValueError`,因此 `except ValueError:` 块会被触发,执行打印 "This code caused an ValueError",即选项D。

 

2.下面程序输入是1时,输出是什么?

def func(a):
    if a==0:
        raise ValueError
    elif a==1:
        raise ZeroDivisionError
    
i=int(input())
try:
    func(i)
    print("ok")
except Exception as e:
    print(type(e))

A.ok

B.<class 'ZeroDivisionError'>

C<class 'ValueError'>

D.以上都不是

代码分析:这段代码演示了如何使用异常处理机制捕获并处理不同类型的异常。

def func(a):  # 定义一个名为 func 的函数,参数为 a
    if a == 0:  # 判断 a 是否等于 0
        raise ValueError  # 如果 a 等于 0,抛出 ValueError 异常
    elif a == 1:  # 判断 a 是否等于 1
        raise ZeroDivisionError  # 如果 a 等于 1,抛出 ZeroDivisionError 异常

i = int(input())  # 从标准输入读取一个整数并赋值给变量 i
try:  # 尝试执行以下代码块
    func(i)  # 调用 func 函数,传入参数 i
    print("ok")  # 如果 func 没有抛出异常,打印 "ok"
except Exception as e:  # 捕获所有继承自 Exception 的异常,并将异常实例赋值给变量 e
    print(type(e))  # 打印异常的类型

由于输入是1,代码运行过程如下

i = int(input())  # 输入1,i 的值为1

try:
    func(i)  # 调用 func(1),进入 func 函数
    # 进入 func 函数
    # a == 1,因此抛出 ZeroDivisionError 异常
except Exception as e:
    print(type(e))  # 捕获到 ZeroDivisionError,打印 <class 'ZeroDivisionError'>

所以输出<class 'ZeroDivisionError'>,即选项B

三、填空题

1.Python内置函数______ 用来打开文件。

open 

  • open函数用法:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • 参数:
    • file:要打开的文件的名称或路径。
    • mode:文件打开模式,如只读 ('r')、写入 ('w')、追加 ('a')、二进制模式 ('b') 等。
    • bufferingencodingerrorsnewline 等参数用于控制文件的读取和写入方式。
  • 返回值:文件对象,可以对其进行读写操作。
  • 例如👇
  • # 打开一个文件进行读取
    with open('example.txt', 'r') as file:
        content = file.read()
        print(content)
    

 

 

2.Python内置函数open 用_____打开文件表示写模式。

w

  • 文件打开模式
    • 'r':只读模式(默认)。
    • 'w':写模式。如果文件存在,会先清空文件内容。如果文件不存在,会创建新文件。
    • 'a':追加模式。如果文件存在,写入的数据会追加到文件末尾。
    • 'b':二进制模式。
    • 't':文本模式(默认)。
    • 'x':排他性创建模式。如果文件已存在,会引发 FileExistsError
    • '+':读写模式。
    • 例如👇
    • # 打开一个文件进行写入
      with open('example.txt', 'w') as file:
          file.write('Hello, World!')
      

 

 

3.Pandas模块用____函数打开Excel文件。

read_excel

Pandas read_excel 函数

  • 用法:pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, ... )
  • 参数:
    • io:文件路径、URL、文件类对象等。
    • sheet_name:要读取的工作表的名称或索引,默认读取第一个工作表。
    • 其他参数用于控制读取的数据格式和细节。
    • 例如👇
    import pandas as pd
    
    # 从 Excel 文件中读取数据
    df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
    print(df.head())
    

 

4.Pandas模块用函数______把数据写入CSV文件。

to_csv

Pandas to_csv 函数

  • 用法:DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, ... )
  • 参数:
    • path_or_buf:文件路径或对象。
    • sep:字段分隔符,默认为逗号。
    • 其他参数用于控制输出格式和细节。
    • 例如👇
      import pandas as pd
      
      # 创建示例 DataFrame
      df = pd.DataFrame({
          'Name': ['Alice', 'Bob', 'Charlie'],
          'Age': [25, 30, 35]
      })
      
      # 将 DataFrame 写入 CSV 文件
      df.to_csv('example.csv', index=False)
      

 

5.Plotly用参数________把数据存为HTML文件。

write_html

Plotly write_html 参数

  • 用法:figure.write_html(file, auto_open=False, ... )
  • 参数:
    • file:文件路径或对象。
    • auto_open:是否在写入后自动打开生成的 HTML 文件。
    • 例如👇
      import plotly.express as px
      
      # 创建示例图表
      fig = px.line(x=[1, 2, 3], y=[1, 4, 9], title='Example Plot')
      
      # 将图表保存为 HTML 文件
      fig.write_html('example.html')
      

       

 

6.下面程序的输出是____(字符串不要加引号)

try:
    x = float("abc123")
    print("数据类型转换完成")
except IOError:
    print("This code caused an IOError")
except ValueError:
    print("This code caused an ValueError")

与单选第一题是一样的   会输出This code caused an ValueError

"abc123" 不是一个有效的浮点数表示,所以 float("abc123") 会引发一个 ValueError 异常,except ValueError: 块会被执行。

 

7.下面程序输入是 -3 时,输出是____

def area(r):
    assert r>=0,"参数错误,半径小于0"
    s=3.14159*r*r
    return s
    
r=float(input())
try:
    print(area(r))
except AssertionError as msg:
    print(msg)

会输出 参数错误,半径小于0

代码分析:

def area(r):
    assert r >= 0, "参数错误,半径小于0"  # 断言 r 必须大于等于 0,否则引发 AssertionError
    s = 3.14159 * r * r  # 计算圆的面积
    return s

r = float(input())  # 从用户输入中读取半径值,并转换为浮点数
try:
    print(area(r))  # 尝试计算并打印圆的面积
except AssertionError as msg:
    print(msg)  # 如果发生 AssertionError,打印错误信息

输入-3时,代码运行情况如下 

  1. r = float(input()) 读取输入并将其转换为浮点数 -3.0
  2. 调用 print(area(r)):
    • area(-3.0) 进入函数 area(r),断言 r >= 0 失败,因为 r-3.0
    • 引发 AssertionError,并附带错误消息 "参数错误,半径小于0"
  3. 异常被捕获到 except AssertionError as msg 块中,并打印错误信息 msg

 

未经允许 不得转载

如有错误 敬请指正

 

 

  • 38
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
题目链接: https://pintia.cn/problem-sets/14/problems/779 一、题目大意 本题要求编写一个函数is_prime(n),判断n是否为素数。若n是素数,则返回True;否则返回False。 二、算法思路 素数指只能被1和自身整除的大于1的正整数。 判断一个数n是否为素数,可以先遍历2到n-1之间的所有数i,若n能被某个i整除,则n不是素数。 但是这种方法的时间复杂度显然过高,不适用于大数判断。 另外一个更高效的算法是“质数筛选法”,即埃拉托斯特尼筛法(Sieve of Eratosthenes)。 该方法的基本思想是从2开始,将每个质数的倍数都标记成合数。一个数如果不是任何数的倍数,则它一定是素数。 步骤如下: 1.先把2作为素数,把2的倍数全部标记为合数。 2.找到下一个未标记的数3,把它作为素数,把3的倍数全部标记为合数。 3.找到下一个未标记的数5,把它作为素数,把5的倍数全部标记为合数。 4.重复步骤2、3直到需要判断的数N的平方根m,若该数为素数,则它没有被除过,即它保留的是初始的值2。 三、代码实现 def is_prime(n): if n < 2: return False for i in range(2, int(n ** 0.5) + 1): if n % i == 0: return False return True 本题中只需要实现is_prime函数即可。 is_prime函数首先判断n是否小于2,若是,则不是素数,直接返回False。然后遍历2到n平方根之间的所有数i,若n能被i整除,则n不是素数,返回False。若遍历完所有数都没有返回,则n是素数,返回True。 四、总结 本题考察了素数的判断算法,既可以使用暴力枚举的方式,也可以使用高效的质数筛选法。实现过程中需要注意程序的效率和算法的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值