python - 将字母与Python中列表中的相应数字匹配
问题描述
我正在研究制作一个程序,当用户输入名称作为参数时,它会将每个字母与存储在列表中的相应数字匹配。
例如:
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
因此,如果我要传入“Adam”,它将返回:
8.17
4.25
8.17
2.41
谢谢!
解决方案
使用以字母字符为键的字典作为整数的值
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
dic = { alphabetList[i][1]: alphabetList[i+1] for i in range(0,len(alphabetList),2)}
for i in name:
print(dic[i.lower()])
nameNumbers('adam')
或者您需要找到每个字符的索引,在您的列表中每个字符都是大写字母 + 小写字母 ie Aa
or Bb
,然后使用 list.index 查找索引位置并访问列表中该索引的下一个元素
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
for alphabet in name:
to_find = "{}{}".format(alphabet.upper(), alphabet.lower())
print(alphabetList[alphabetList.index(to_find)+1])
nameNumbers('adam')
推荐阅读
- api-key - 使用 API 密钥在 Google Cloud Run 上获得 403 Forbidden
- javascript - Vue:是否可以导入仅适用于该组件的 js
- php - Laravel - 使用多态关系存储数据
- linq-to-sql - 如何计算 Entity Framework Core 中的特定列
- magnolia - 组件可用性的重复性限制
- python - 想要对 while 循环进行矢量化以提高性能(已更新)
- c - 如何反转文本文件中的订单号,然后将反转后的数字写回文本文件
- android - 当 dagger 不自动生成组件代码时对 gradle 文件进行故障排除
- clojure - 如何使用 Clojure CLI (tools.deps) 和 figwheel-main 设置 nREPL
- gradle - ubuntu 18 ./gradlew 命令失败