
Python笔试题1
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOCX
简介:
本资料包含了常见的Python编程语言笔试题目及解答,旨在帮助学习者检验和提升其Python基础知识与编程技能。
【Python 笔试1】
1A 该脚本的行为与需求不符是因为`while`循环的条件设置不正确。当前条件下,循环会一直执行直到变量`i`等于8.1,但由于每次迭代中`i`乘以3而无法精确达到8.1这个数值,导致无限接近但永远不会等于8.1的情况发生。因此,应该将循环条件改为当`i < 8.1`时停止循环。
改进后的脚本如下:
```python
multiply_factor = 3
i = 0.1
while i < 8.1:
i *= multiply_factor
print(i)
```
这样可以确保在`i`大于或等于8.1时,循环将终止,并符合题目要求。
2A 要编写一个返回字符的ASCII值的函数,可以通过使用Python内置的`ord()`函数来实现。以下是该功能的具体实现:
```python
def ascii_value(char):
if char.isalpha():
return ord(char.lower()) - 96 if char.islower() else ord(char.upper()) - 64
else:
return None
print(ascii_value(a)) # 结果是1
print(ascii_value(A)) # 结果是1
print(ascii_value(说)) # 结果为None,因为说不是ASCII字符集中的字母。
```
2B ASCII编码仅涵盖英语和部分西欧语言的字符。对于非拉丁语系的语言来说,Unicode标准提供了更广泛的字符支持。
3A 在`func`函数中使用了默认参数`data=[]`来初始化列表。这导致每次调用该函数时,如果未传入新的数据,则之前的数据会被保留并继续累积。为避免这种行为,可以将默认参数设置为None,并在函数内部进行检查和重新初始化。
3B 修正后的代码如下:
```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 `mystery`函数应该接受一个整数参数n,并返回一个新的闭包,该闭包能够将任何给定的x乘以之前传入的n值。
```python
def mystery(n):
def closure(x):
return n * x
return closure
foo = mystery(8)
print(foo(8)) # 结果是64
print(foo(-1)) # 结果为-8
```
5A `foo`函数接受一个字符串列表作为输入,并使用Python的内置过滤器和长度检查功能来筛选出所有长度为3个字符的字符串。
```python
def foo(lst):
return list(filter(lambda s: len(s) == 3, lst))
res1 = foo([a, da, bde, fdas, fdakg, 1234567]) # 输出[a,da,bde]
res2 = foo([1,fdafdas,fda,fd,fewqi,a]) # 输出[1, fda, fd, a]
```
5B `bar`函数应该计算给定字符串列表中所有正整数的阶乘之和。如果列表中没有正整数,则返回0。
```python
import math
def bar(lst):
positive_ints = [int(num) for num in lst if num.isdigit() and int(num) > 0]
return sum(math.factorial(i) for i in positive_ints)
res1 = bar([1, 2, 3, 4, 5]) # 输出120
res2 = bar([-1,1,-1,2]) # 输出2
```
6C Python的全局解释器锁(GIL)的主要作用是确保在任何给定时刻只有一个线程执行Python字节码,从而防止数据竞争。尽管这限制了多核CPU上的计算密集型任务并行处理的能力,但GIL简化了内存管理,并允许使用C语言扩展时保持线程安全。
全部评论 (0)


