Python 笔试题目分析与修正

需积分: 0 0 下载量 197 浏览量 更新于2024-08-04 收藏 63KB DOCX 举报
1. 问题1涉及一个使用while循环的Python脚本,其目标是打印一系列的0.1乘以3的倍数,直到达到8.1。然而,脚本实际上会无限循环并不断打印数字,而不是在特定条件满足后停止。问题在于while循环的终止条件设置错误,`i != 8.1` 应该改为 `i < 8.1`,这样当 `i` 达到8.1时,循环就会自然终止。修改后的代码如下: ```python multiply_factor = 3 i = 0.1 while i < 8.1: i *= multiply_factor print(i) ``` 2. 问题2A要求编写一个函数,返回给定字符的ASCII值。如果输入不是ASCII字母,则返回None。可以使用Python的ord()函数实现这一功能。示例代码如下: ```python def func(char): if char.isalpha(): return ord(char) else: return None print(func("a")) # 结果:97 print(func("A")) # 结果:65 print(func("说")) # 结果:None ``` 问题2B的回答是,尽管ASCII编码适用于大部分英文字符,但Unicode是一种包含更多字符集的标准,如非英文字符、符号和表情,因此在处理全球范围内的文本处理时更为全面。 3. 在问题3中,`func()` 函数在每次调用时都会添加一个新的元素0到列表`data`中,因为默认参数`data=[]`创建了一个局部变量而非引用全局变量。要使每次调用只影响自身,应将`data`改为可选参数,如`data=None`,并确保每次调用时传递新值。修改后的代码: ```python def func(data=None): if data is None: data = [] data.append(0) return data print(func()) # [0] print(func([1])) # [1, 0] print(func()) # [0] print(func([1])) # [1, 0] print(func()) # [0] ``` 4. 问题4描述了一个名为`foo`的函数,它调用另一个名为`mystery`的函数,并根据输入的数值进行相应操作。给定例子表明,`mystery(8)`返回8的两倍,而`foo(-1)`返回-1的负两倍。`mystery`函数可能是这样的: ```python def mystery(n): return n * 2 foo = mystery(8) ``` 5. 问题5要求使用Python的内置函数来完成某些任务,但提供的链接并未给出具体的问题或要求。根据上下文,可能是询问如何使用内置函数来执行常见的字符串处理、数据转换或其他操作。由于缺少详细问题,无法提供精确答案,但请参考Python官方文档(链接)查找所需的函数,如`len()`、`str()`、`int()`等,并结合题目描述来实现所需功能。