在Python中,列表本身的索引号可以用作整数吗?
我正在做这个代码战争卡塔 您必须返回字符串中得分最高的单词。字母是根据字母表中的位置来评分的在Python中,列表本身的索引号可以用作整数吗?,python,string,list,dictionary,Python,String,List,Dictionary,我正在做这个代码战争卡塔 您必须返回字符串中得分最高的单词。字母是根据字母表中的位置来评分的 a =1, z= 26 我已经创建了一个列表: alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 我想遍历单词,它将在作为参数传递的字符串x中,如果要检查的字母在字母
a =1, z= 26
我已经创建了一个列表:
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
我想遍历单词,它将在作为参数传递的字符串x中,如果要检查的字母在字母表列表中,它当然会在字母表列表中,然后到一个sperate变量:score,根据字母表列表中当前要检查的字母的索引编号递增score
可以这样使用列表索引吗
这是我的代码soo-far:
def high(x):
alphabet = []
scores = [] # ignore
score = 0
for letter in range(97,123):
alphabet.append(chr(letter))
word_list = x.split()
for word in word_list:
for letter in word:
if letter in alphabet:
score += # find way to use alphabet list index number as integer here
谢谢。索引您还需要+1来说明索引[0]
# vowels list
vowels = ['a', 'e', 'i', 'o', 'i', 'u']
# index of 'e' in vowels
index = vowels.index('e')
print('The index of e:', index)
索引您还需要+1来说明索引[0]
# vowels list
vowels = ['a', 'e', 'i', 'o', 'i', 'u']
# index of 'e' in vowels
index = vowels.index('e')
print('The index of e:', index)
对。alphabet.indexletter+1将为您提供所需信息。是。alphabet.indexletter+1将为您提供所需信息。@AlanJP,是否尝试此程序: 简单单词评分程序 导入字符串 characters=string.ascii_小写 排名={c:i代表枚举字符中的i,c,1} 版画排名 单词列表='阿巴很棒'。拆分 对于word\u列表中的word: 分数=0重置每个输入单词的分数 对于word中的字符: 分数+=排名[字符] 印刷字、乐谱 输出:
abba 6
is 28
great 51
>>>
@AlanJP,你想试试这个程序吗: 简单单词评分程序 导入字符串 characters=string.ascii_小写 排名={c:i代表枚举字符中的i,c,1} 版画排名 单词列表='阿巴很棒'。拆分 对于word\u列表中的word: 分数=0重置每个输入单词的分数 对于word中的字符: 分数+=排名[字符] 印刷字、乐谱 输出:
abba 6
is 28
great 51
>>>
使用和字典分数来跟踪每个字母及其分数。注意,输入字符串是小写的——我假设大写字母和小写字母的得分相同
alphabet = 'abcdefghijklmnopqrstuvwxyz'
score = dict(zip(list(alphabet), [i + 1 for i in range(len(alphabet))]))
x = 'aB, c'
score = sum([score[c] for c in list(x.lower()) if c in score])
print(score)
# 6
使用和字典分数来跟踪每个字母及其分数。注意,输入字符串是小写的——我假设大写字母和小写字母的得分相同
alphabet = 'abcdefghijklmnopqrstuvwxyz'
score = dict(zip(list(alphabet), [i + 1 for i in range(len(alphabet))]))
x = 'aB, c'
score = sum([score[c] for c in list(x.lower()) if c in score])
print(score)
# 6
从我看来,根本不需要字母列表:
import string
def high(x):
score = 0
for word in x.split():
for letter in word:
if letter in string.ascii_lowercase:
score += ord(letter)-96
return score
或者更简单:
import string
def high(x):
# Sum expression on multiple lines for clarity
return sum( ord(letter)-96
for word in x.split()
for letter in word
if letter in string.ascii_lowercase)
从我看来,根本不需要字母列表:
import string
def high(x):
score = 0
for word in x.split():
for letter in word:
if letter in string.ascii_lowercase:
score += ord(letter)-96
return score
或者更简单:
import string
def high(x):
# Sum expression on multiple lines for clarity
return sum( ord(letter)-96
for word in x.split()
for letter in word
if letter in string.ascii_lowercase)
对于网站问题,请包括问题的原始链接。查看列表是否确实需要存在于al-使用ordletter-96有什么问题,它将分别为a到z提供1到26之间的值。要测试该字母是否为字母,请使用字母。islapha@AlanJP-请查看我的帖子。还没有看到链接。嗯-您需要修改一点以满足最大分数单词需求。应该没问题。@DanielHao我更新了我的问题以包含网站问题的链接,请包含该问题的原始链接。请看一下列表是否确实需要存在于al-使用ordletter-96有什么问题,它将分别为a到z提供1到26之间的值。要测试该字母是否为字母,请使用字母。islapha@AlanJP-请查看我的帖子。还没有看到链接。嗯-您需要修改一点以满足最大分数单词需求。这应该没问题。@DanielHao我更新了我的问题,将链接包括在内,如果没有这样的项目,则会引发一个ValueError。假设包括:“如果要检查的字母在字母表列表中,它当然会是”string.ascii_小写是对手工硬编码英文字母表的改进。例如,string.ascii_lowercase.indexletter+1。如果没有此类项,则会引发ValueError。假设包括:“如果要检查的字母在字母表列表中,它当然会是”string.ascii_lowercase是对手动硬编码英文字母表的改进。即string.ascii_lowercase.indexletter+1。