用python实现下列功能1.构建分别包含一千条、一万和十万条数据的数据源:电话本(由姓名和电话号构成) 2.编写程序,分别查找其中任意名字或标识符的电话号码 3.分别记录三种数量级下,三种类型的运行时间 4.列出实验信息,CPU、内存以及操作系统
时间: 2024-09-13 12:08:43 浏览: 14
在Python中实现这样的功能,我们可以利用pandas库来创建和操作数据,以及time模块来测量运行时间。以下是步骤的描述:
1. 构建数据源:
```python
import pandas as pd
# 创建不同规模的电话本
def create_phone_book(size):
data = {'Name': [], 'Phone': []}
for _ in range(size):
name = f"Person{random.randint(1000, 9999)}" # 使用随机生成的名字
phone = str(random.randint(1000000, 9999999)) # 随机生成的电话号码
data['Name'].append(name)
data['Phone'].append(phone)
return pd.DataFrame(data)
phone_books = {
"small": create_phone_book(1000),
"medium": create_phone_book(10000),
"large": create_phone_book(100000)
}
```
2. 查找电话号码:
```python
def search_phone_book(phone_book, name_or_id):
try:
return phone_book[phone_book['Name'] == name_or_id]['Phone'].values[0]
except IndexError:
print(f"{name_or_id} not found.")
return None
# 示例查找
for size, book in phone_books.items():
print(f"\nSearching {size} records:")
searched_name = input("Enter a name or ID: ")
result = search_phone_book(book, searched_name)
if result is not None:
print(f"The phone number is: {result}")
```
3. 记录运行时间:
```python
import time
start_times = {}
end_times = {}
for size, book in phone_books.items():
start_time = time.time()
search_phone_book(book, input(f"Search in {size} records: "))
end_time = time.time()
start_times[size] = start_time
end_times[size] = end_time
run_time = end_time - start_time
print(f"Time taken to search ({size}): {run_time} seconds")
```
4. 实验信息(假设环境变量已获取):
```python
import platform
cpu_info = platform.processor() or "Unknown"
memory_info = f"{round(psutil.virtual_memory().total / (1024 ** 3), 2)} GB" # 用GB表示总内存
os_info = platform.platform()
print("\nEnvironment details:")
print(f"CPU: {cpu_info}")
print(f"Memory: {memory_info}")
print(f"Operating System: {os_info}\n")
```