我正在完成教科书上的练习,我被要求创建一个数字命理程序,它取一个名字,根据字母表中的升序给每个字母赋值,并返回字母的总和。你知道吗
我写的代码对任何不重复字母的名字都适用。例如,如果名称是'kayla',我知道if语句将在'a'的第一个实例处停止。在它当前的设计中,有没有一种方法可以捕获多个字母,或者它需要以不同的方式对字母进行排序?你知道吗
def main():
alphabet = 'abcdefghijklmnopqrstuvwxyxz'
user_name = raw_input('Please enter your name ')
value = sum = 0
for char in alphabet:
value = value + 1
if char in user_name:
sum = sum + value
print sum
既然你正在读一本教科书,我想你不只是想要答案,这里有一个提示。你在重复(循环)错误的事情。你应该在
user_name
上循环,而不是alphabet
。你知道吗更新。如果你想要一个很好的“Pythonic”解决方案,这是一种方法:
解释:
ord
返回字符的ASCII码,例如65
的'A'
1
表示A
,2
表示B
,依此类推sum
是一个内置函数,它只执行您所期望的操作sum
的参数是一个表达式,它的计算结果是一个数字序列,user_name
中的每个字母对应一个in
函数只验证元素是否存在于列表中。你可以用很多方法来解决这个问题,但我认为一个好的学习方法是创建一个字典来存储字母、值对,然后迭代名称字符来求和值:另一种形式是使用索引字符串函数来获取字符串中字母位置的值。 下面是示例代码:
使用列表理解和内置
sum
函数的一种非常简单的方法:相关问题 更多 >
编程相关推荐