添加相同索引的变量并添加到lis

2024-03-28 21:12:43 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想添加一个与另一个列表相同索引的变量,并将该变量添加到总数中。在这种情况下,我试图使积分等于拼字游戏中的字母。你知道吗

letters = ['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']

point_values = [1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10]

所以我想a等于1,c等于3。你知道吗

假设我有一个rack = ['c','a','t']
我怎样才能使'rack'==points = 5?你知道吗

这是我之前的代码:如果我说'c',它会给每个字母一个Out[1]: 87。你知道吗

import random

def load_words():
    """
    Returns a list of valid words. Words are strings of lowercase letters.
    """
    # inFile: file
    inFile = open('words.txt', 'r')
    # line: string
    line = inFile.readline()
    # wordlist: list of strings
    wordlist = line.split()
    return wordlist
letters = ['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']
point_values = [1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10]
bag_of_letters = []
for x in range(26):
    for i in range(letter_count[x]):
        bag_of_letters.append(letters[x])
rack  = []
for i in range(7):
    rack.append(bag_of_letters.pop(random.randint(0,len(bag_of_letters)-1)))
print (rack)
points = 0
total_points = 0
round_count = 10
letterlst = []
while(round_count >= 0):
    word = input("GIMME A LETTER TO COUNT THE SCORE OF: ")
    for i in word:
        letterlst += i
    for let in word:
        for letter in letters:
            for word_rack in rack:
                if let == word_rack:
                    points += point_values[letters.index(letter)]
    total_points += points
    if round_count == 0:
        print("You have gotten",total_points,"points at the end of your round")
    print(points,"points this round")
    points = 0
    round_count -= 1

Tags: ofinforcountlineinfilepointsword
2条回答

下面是代码的简化版本:

>>> letters = ['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']
>>> point_values = [1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10]

>>> my_string = 'cat'
>>> sum(point_values[letters.index(c)] for c in my_string)
5

解释:迭代字符串中的每个字符。在letters列表中查找字符的索引。从point_values获取该索引的值。将所有值相加。所有这些都是在最后一行代码中完成的。Python是神奇的。正确的?:)

这就是你想要的吗?你知道吗

wordlist = ['why', 'are', 'you', 'doing', 'this']

letters = ['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']
point_values = [1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10]

score_list = []

for word in wordlist:
    score = 0
    for letter in word:
        score += point_values[letters.index(letter)]
    score_list.append(score)

print score_list   

在您的代码中,我找不到letter_count的定义,为什么必须使用randint?你知道吗

相关问题 更多 >