编写小说姓名程序可以通过以下步骤实现:
准备姓名数据
收集常见的姓、男名、女名常用词,并分别存储在三个列表中,例如 `boysnames`、`girlsnames` 和 `surnames`。
读取姓名数据
使用 `with open` 方法读取存储姓名常用词的 CSV 文件,并将其内容转换为列表。例如:
```python
with open('./boysnames.csv', encoding='utf-8') as f:
boysnames = f.read().split('\n')
boysnames.pop() 移除列表中的空行
with open('./girlsnames.csv', encoding='utf-8') as f:
girlsnames = f.read().split('\n')
girlsnames.pop() 移除列表中的空行
```
生成随机姓名
编写函数来生成随机姓名。例如,生成指定姓氏的男名或女名:
```python
import random
def generate_name(surname, gender):
if gender == 'male':
names = boysnames
elif gender == 'female':
names = girlsnames
else:
raise ValueError("Invalid gender")
if surname:
names = [surname + name for name in names]
return random.choice(names)
```
整合代码
将上述步骤整合到一个完整的程序中,例如:
```python
from random import sample, randint
读取姓名数据
with open('./boysnames.csv', encoding='utf-8') as f:
boysnames = f.read().split('\n')
boysnames.pop()
with open('./girlsnames.csv', encoding='utf-8') as f:
girlsnames = f.read().split('\n')
girlsnames.pop()
生成随机姓名
def generate_name(surname, gender):
if gender == 'male':
names = boysnames
elif gender == 'female':
names = girlsnames
else:
raise ValueError("Invalid gender")
if surname:
names = [surname + name for name in names]
return random.choice(names)
示例使用
surname = "林"
gender = "male"
name = generate_name(surname, gender)
print(f"Generated name: {surname}{name}")
```
通过以上步骤,你可以编写一个简单的小说姓名生成程序,用于自动生成符合特定性别和姓氏的姓名。你可以根据需要扩展姓名数据列表,增加更多的姓名常用词,以生成更多样化的名字。