题目描述补充
题目: 识别名人——实现一个名人识别系统,该系统能够根据用户输入的名人姓名(或关键词),从给定的名人数据库中检索并返回相关的名人信息。名人信息至少包括姓名、职业(如演员、歌手、科学家等)和一张代表图片的URL。如果数据库中不存在该名人,则返回一条“未找到该名人”的消息。
示例数据库(模拟)
为了简化问题,我们假设名人数据库是以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
$celebrities = json_decode(file_get_contents('celebrities.json'), true);
function findCelebrity($name, $celebrities) {
foreach ($celebrities as $celebrity) {
if (strpos(strtolower($celebrity['name']), strtolower($name)) !== false) {
return $celebrity;
}
}
return "未找到该名人";
}
$name = "周杰伦"; // 示例输入
$result = findCelebrity($name, $celebrities);
echo is_array($result) ? json_encode($result) : $result;
?>
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 示例
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攻击等,尽管这里是文件读取)。
- 码小课网站中有更多关于算法、数据结构、编程语言等的学习内容,欢迎访问学习。