当前位置: 面试刷题>> 识别名人 (经典算法题500道)
### 题目描述补充
**题目**: 识别名人——实现一个名人识别系统,该系统能够根据用户输入的名人姓名(或关键词),从给定的名人数据库中检索并返回相关的名人信息。名人信息至少包括姓名、职业(如演员、歌手、科学家等)和一张代表图片的URL。如果数据库中不存在该名人,则返回一条“未找到该名人”的消息。
### 示例数据库(模拟)
为了简化问题,我们假设名人数据库是以JSON格式存储在文件中的,内容如下(实际部署时可能存储在数据库、云服务等中):
```json
[
{
"name": "周杰伦",
"profession": "歌手, 演员, 导演, 音乐制作人",
"image_url": "https://example.com/jaychou.jpg"
},
{
"name": "爱因斯坦",
"profession": "物理学家",
"image_url": "https://example.com/einstein.jpg"
},
{
"name": "玛丽莲·梦露",
"profession": "演员, 模特, 制片人",
"image_url": "https://example.com/marilyn.jpg"
}
]
```
### 示例代码
#### PHP 示例
```php
```
#### Python 示例
```python
import json
def find_celebrity(name, celebrities):
for celebrity in celebrities:
if name.lower() in celebrity['name'].lower():
return celebrity
return "未找到该名人"
with open('celebrities.json', 'r') as file:
celebrities = json.load(file)
name = "爱因斯坦" # 示例输入
result = find_celebrity(name, celebrities)
print(result if isinstance(result, dict) else result)
```
#### JavaScript 示例
```javascript
const fs = require('fs');
const path = require('path');
const celebrities = JSON.parse(fs.readFileSync(path.join(__dirname, 'celebrities.json'), 'utf8'));
function findCelebrity(name, celebrities) {
for (const celebrity of celebrities) {
if (celebrity.name.toLowerCase().includes(name.toLowerCase())) {
return celebrity;
}
}
return "未找到该名人";
}
const name = "玛丽莲·梦露"; // 示例输入
const result = findCelebrity(name, celebrities);
console.log(JSON.stringify(result, null, 2) || result);
```
### 注意事项
- 以上代码示例均假设`celebrities.json`文件与代码文件位于同一目录下,或适当修改了文件路径。
- 在实际应用中,可能需要考虑性能优化(如使用索引、缓存等),以及安全性(如防止SQL注入、XSS攻击等,尽管这里是文件读取)。
- 码小课网站中有更多关于算法、数据结构、编程语言等的学习内容,欢迎访问学习。