将字母与 Jython 列表中的相应数字匹配
Match letter to corresponding number in list in Jython
我正在制作一个程序,当用户输入名称作为参数时,它会将每个字母与存储在列表中的相应数字相匹配。
例如:
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
所以如果我要传入 "Adam" 它将 return:
8.17
4.25
8.17
2.41
到目前为止我已经知道了,但它只有 return 列表中的一项,需要准确输入:
for letter in name:
indexOfLetter = alphabetList.index(name)
letterFrequency = alphabetList[indexOfLetter + 1]
print(letterFrequency)
谢谢!
只需对您的代码稍作改动
代码
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
for letter in name:
# Since each has upper followed by lower case
# Use letter.upper() + letter.lower() since you have upper
indexOfLetter = alphabetList.index(letter.upper() + letter.lower())
letterFrequency = alphabetList[indexOfLetter + 1]
print(letterFrequency)
nameNumbers("Adam")
输出
8.17
4.25
8.17
2.41
备选
程序应计算数字并在外部打印。
此外,for 循环可以用更简洁的列表理解来代替。
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
indexes = [alphabetList.index(letter.upper() + letter.lower()) for letter in name]
return [alphabetList[i+1] for i in indexes]
print(*nameNumbers("Adam"), sep="\n")
与上面相同的输出。
我正在制作一个程序,当用户输入名称作为参数时,它会将每个字母与存储在列表中的相应数字相匹配。
例如:
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
所以如果我要传入 "Adam" 它将 return:
8.17
4.25
8.17
2.41
到目前为止我已经知道了,但它只有 return 列表中的一项,需要准确输入:
for letter in name:
indexOfLetter = alphabetList.index(name)
letterFrequency = alphabetList[indexOfLetter + 1]
print(letterFrequency)
谢谢!
只需对您的代码稍作改动
代码
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
for letter in name:
# Since each has upper followed by lower case
# Use letter.upper() + letter.lower() since you have upper
indexOfLetter = alphabetList.index(letter.upper() + letter.lower())
letterFrequency = alphabetList[indexOfLetter + 1]
print(letterFrequency)
nameNumbers("Adam")
输出
8.17
4.25
8.17
2.41
备选
程序应计算数字并在外部打印。
此外,for 循环可以用更简洁的列表理解来代替。
def nameNumbers(name):
alphabetList = ['Aa', 8.17, 'Bb', 1.49, 'Cc', 2.78, 'Dd', 4.25,
'Ee', 12.70, 'Ff', 2.23, 'Gg', 2.02, 'Hh', 6.09, 'Ii', 6.97,
'Jj', 0.15, 'Kk', 0.77, 'Ll', 4.03, 'Mm', 2.41, 'Nn', 6.75,
'Oo', 7.51, 'Pp', 1.93, 'Qq', 0.10, 'Rr', 5.99, 'Ss', 6.33,
'Tt', 9.06, 'Uu', 2.76, 'Vv', 0.98, 'Ww', 2.36, 'Xx', 0.15,
'Yy', 1.97, 'Zz', 0.07]
indexes = [alphabetList.index(letter.upper() + letter.lower()) for letter in name]
return [alphabetList[i+1] for i in indexes]
print(*nameNumbers("Adam"), sep="\n")
与上面相同的输出。