Python程序不起作用 - 非常简单

时间:2013-11-19 19:53:15

标签: python string numbers integer

基本上,对于这项任务,我需要通过对每个字母分配的值进行求和,将名称转换为“密码”。一切都工作到目前为止,但当我试图总结它时,它给了我一个错误。我想我需要将这些字母转换为他们的数字形式,但到目前为止我所尝试的所有内容都无效。

例如

total_name =0 for c in end_name
    c_int = int(c)          
    total_name+= c_int

任何帮助将不胜感激!这是我的代码:

'a' ==1
'b'==2
'c'==3
'd'==4
'e'==5
'f'==6
'g'==7
'h'==8
'i'==9
'j'==10
'k'==11
'l'==12
'm'==13
'n'==14
'o'==15
'p'==16
'q'==17
'r'==18
's'==19
't'==10
'u'==21
'v'==22
'w'==23
'x'==24
'y'==25
'z'==26

#input:ask user to enter their name
#processing: convert name into all lower case then calculate number
#output: return name and reduction to user

name = input('Name:')
new_name= str.lower(name)
end_name=new_name.replace(" ","")

print('Your "cleaned up" name is:',end_name)

total_name =0
for c in end_name

    total_name+= c

print('Reduction:',total_name)

5 个答案:

答案 0 :(得分:1)

你错过了冒号:

for c in end_name:

答案 1 :(得分:1)

您需要使用ord()功能将字符转换为数字。

“A”的ASCII代码为65,因此您可以减去64以缩放到首选偏移量。

total_name=0
for c in end_name:
    total_name+=ord(c)-64

对于小写,'a'是ASCII码97,但是你会得到任何大写的负数。您也可以在循环之前将整个字符串规范化为大写(或小写,您的选择)。

答案 2 :(得分:1)

这是一种方法:

values = dict(zip("abcdefghijklmnopqrstuvwxyz", range(1,27)))
name = raw_input('Name:')
score = 0

for l in name.lower():
    score += values[l]

对于输入Jason,我得到值59

答案 3 :(得分:0)

_d = {chr(k): k for k in range(97, 123)}

inp = raw_input().replace(" ", "").lower()

print ''.join([str(_d[ele]) for ele in inp])

如果你想要总和,可以使用总和

print sum([str(_d[ele]) for ele in inp])

输出:

as d f g
97115100102103

答案 4 :(得分:0)

这个问题可以分为两行:

name = input('Name: ').lower().replace(" ", "")
print(sum(ord(letter) - ord('a') + 1 for letter in name))