gpt4 book ai didi

Python在for循环中计算许多不同的和

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:16 25 4
gpt4 key购买 nike

我试图计算输入的字母值 (a = 1, b = 2...z = 26)。任何其他字符都被视为 0代码如下:

alpha = list('abcdefjhijklmnopqrstuvwxyz')
a = []
sum1= 0
while True:
b = input()
if b == '':
break
else:
a.append(b.lower())
lst_len = len(a)
for i in range(lst_len):
elem_len = len(a[i])
for j in range(elem_len):
if (a[i][j]) in alpha:
num = alpha.index(a[i][j]) + 1
sum1 += num

else:
pass
print sum1

我的问题是如何在 for 循环中打印每个 i 的总和值,而不是继续添加到之前的总和

谢谢!

最佳答案

使用字典,将每个字母映射到正确的值,然后使用 dict.get 对每个单词中的每个字符使用 0 作为缺失键的默认值,并对每个单词的所有值求和:

alpha = dict(enumerate('abcdefjhijklmnopqrstuvwxyz',1))
a = []

while True:
b = input("Press 'enter' when finished")
if b == '':
break
else:
a.append(b.lower())
for word in a:
print(sum(alpha.get(ch,0) for ch in word))

您还可以使用 iter 和 lit comp 来获取输入:

alpha = dict(enumerate('abcdefjhijklmnopqrstuvwxyz',1))
a = [w for w in iter(lambda:input("Press 'enter' when finished").lower(),"")]

iter 的第二个参数是一个标记值,它会在输入时打破循环。

for word in a:
# sum all letter values, chars not in out dict will get 0
print(sum(alpha.get(ch,0) for ch in word))

alpha 会将每个字母作为键和 1-26 之间的值:

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

附带说明一下,您不需要在字符串上调用列表,字符串是可迭代和可索引的,因此 alpha = 'abcdefjhijklmnopqrstuvwxyz' 就足够了。

您也不需要在每个 if 之后添加 else,除非您真的想做其他事情,这样您就可以删除 else:pass。

最后,如果不使用 if (a[i][j]) in alpha: 然后进行索引,您可以使用 str.find 并检查返回值不是 == to -1,这是没有匹配项时的默认值。

关于Python在for循环中计算许多不同的和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30762729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com