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