所以我想添加另一个列表的相同索引的变量,并将该变量添加到总计中。在这种情况下,我试图让积分等于拼字游戏中的字母。
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
答案 0 :(得分: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
列表中查找char的索引。从point_values
获取该索引的值。求和所有值。所有这些都是在最后一行代码中完成的。 Python是 MAGICAL 。对? :)
答案 1 :(得分: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
?