python作业帮,Python中的Soundex算法(作业帮助请求)

美国人口普查局使用一种叫做“soundex”的特殊编码来定位一个人的信息。soundex是一种基于姓氏发音而非拼写方式的姓氏编码。发音相同但拼写不同的姓氏,如SMITH和SMYTH,具有相同的代码并一起归档。soundex编码系统的开发,使你可以找到一个姓氏,即使它可能被记录在不同的拼写。在

在这个实验中,你将设计、编码和记录一个程序,当输入带有姓氏时,它会产生soundex代码。系统将提示用户输入姓氏,程序应输出相应的代码。在

基本Soundex编码规则

每一个姓氏的soundex编码都由一个字母和三个数字组成。使用的字母总是姓氏的第一个字母。根据下面所示的soundex指南,这些数字被分配给姓氏的其余字母。如有必要,在末尾添加零,以始终生成四个字符的代码。不考虑附加字母。在

Soundex编码指南

Soundex为各种辅音指定一个数字。发音相似的辅音被赋予相同的编号:

数字辅音

1b,F,p,V 2 C,G,J,K,Q,S,X,Z 3 D,T 4 L 5 M,N 6 R

Soundex忽略字母A、E、I、O、U、H、W和Y

下面还有3个附加的Soundex编码规则。一个好的程序设计可以将这些功能分别实现为一个或多个单独的功能。在

规则1。双字母名称

如果姓氏有任何双字母,应视为一个字母。例如:

古铁雷斯的代码是G362(G,3代表T,6代表第一个R,忽略第二个R,2代表Z)。

规则2。字母并排且具有相同Soundex代码编号的名称

如果在soundex编码指南中,姓氏并排有相同编号的不同字母,则应将它们视为一个字母。示例:

Pfister被编码为P236(p,F被忽略,因为它被认为与p相同,2代表S,3代表T,6代表R)。在

Jackson被编码为J250(J,2表示C,K被忽略与C相同,S被忽略与C相同,5表示N,0加上)。在

规则3。辅音分隔符

3.a.如果一个元音(a,E,I,O,U)分隔出两个具有相同soundex代码的辅音,则元音右侧的辅音被编码。示例:

Tymczak被编码为T-522(T,5代表M,2代表C,Z被忽略(见上面的“并排”规则),2代表K)。因为元音“A”分隔了Z和K,所以K被编码了。

3.b.如果“H”或“W”分开两个具有相同soundex代码的辅音,则右侧的辅音不编码。示例:

*阿什克拉夫特的代码是A261(A,2代表S,C被忽略,因为与S相同,H在中间,6代表R,1代表F)。它的代码不是A226。在

到目前为止,这是我的代码:surname = raw_input("Please enter surname:")

outstring = ""

outstring = outstring + surname[0]

for i in range (1, len(surname)):

nextletter = surname[i]

if nextletter in ['B','F','P','V']:

outstring = outstring + '1'

elif nextletter in ['C','G','J','K','Q','S','X','Z']:

outstring = outstring + '2'

elif nextletter in ['D','T']:

outstring = outstring + '3'

elif nextletter in ['L']:

outstring = outstring + '4'

elif nextletter in ['M','N']:

outstring = outstring + '5'

elif nextletter in ['R']:

outstring = outstring + '6'

print outstring

我只是不知道如何编写这三条规则。那是我需要帮助的地方。所以,任何帮助都是感激的。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值