我正在尝试将不同的字母替换为一个值:元音为1; “ b”,“ g”,“ r”或“ x”为3,其余字母等于5(这是每个字符)。
我尝试使用convert_text和sum,但是都没有用。另外,如果有一种简单的“休息”方式(所有字符-元音-点),将不胜感激!
我是新来的,所以谢谢您的帮助!
convert_text = input("Enter a string: ")
vowel= "a" or "e" or "i" or "o" or "u"
points= "b" or "g" or "r" or "x"
rest= ¡ "c" or "d" "f" or "h" or "j" or "k" or "l" or "m" or "n" or "p" or "q" or "t" or "s" or "u"or "v" or "w" or"y" or "z"
replacements= {vowel:1, points:3, rest:5}
converted_text = input.sub('(\d+)', lambda m: replacements[m.group()], sentence)
print(converted_text)
例如,“ hello”将转换为17或“溢出”转换为26。再次感谢!!
答案 0 :(得分:3)
一种方法:
score = 0
for c in convert_text:
if c in ['a', 'e', 'i', 'o', 'u']:
score += 1
elif c in ['b', 'g', 'r', 'x']:
score += 3
else:
score += 5
print(score)
答案 1 :(得分:2)
尝试在函数中对得分逻辑进行编码,如下所示:
def score(letter):
if letter in ('a', 'e', 'i', 'o', 'u'):
return 1
if letter in ('b', 'g', 'r', 'x'):
return 3
return 5
然后,您可以将其与sum
结合起来进行计算,如下所示:
convert_text = input("Enter a string: ")
sum(score(letter) for letter in convert_text)
例如:
>>> convert_text = input("Enter a string: ")
Enter a string: 'asdf'
>>> sum(score(letter) for letter in convert_text)
16
(为完整起见,您可能需要对非字母字符(例如数字,空格和标点符号)进行一些处理。)