2016-10-03 6 views
-3

Итак, я хочу добавить переменную того же индекса другого списка и добавить эту переменную в общую сумму. В этом случае я пытаюсь сделать точки равными буквам в игре с царапинами.Добавить переменную того же индекса и добавить в список

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?

вот мой уже существующий код: Он дает Out[1]: 87, если я сказал 'c' и за каждую букву.

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 
+3

Я бы рекомендовал вам использовать словарь (буква для значения) вместо двух списков. – L3viathan

ответ

3

Ниже приводится упрощенная версия коды:

>>> 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: MAGICAL. Правильно? :)

0

Это то, что вы хотите?

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?

Смежные вопросы