我想从列表中输入多个元素并让程序打印准确的“pointCount”数量。如果我从任一列表中输入一个元素(例如“a”= 1 点,“f”= 3 点),它就会起作用。问题是,例如,如果我输入“咖啡馆”之类的内容,程序只会打印出“0 分”而不是“7 分”。
onePointLetters = ["a", "b", "c"]
twoPointLetters = ["d", "e"]
threePointLetter = ["f"]
enterLetter = input("Enter a letter: ").lower()
while enterLetter != "stop":
pointCount = 0
if enterLetter in onePointLetters:
pointCount += 1
if enterLetter in twoPointLetters:
pointCount += 2
if enterLetter in threePointLetter:
pointCount += 3
print("You have a total of " + str(pointCount) + " points!")
enterLetter = input("Enter another letter: ").lower()
我尝试了另一种编码选择。
onePointLetters = ["a", "b", "c"]
twoPointLetters = ["d", "e"]
threePointLetter = ["f"]
enterLetter = input("Enter a letter: ").lower()
while enterLetter != "stop":
pointCount = 0
for onePointLetters in enterLetter:
pointCount += 1
for twoPointLetters in enterLetter:
pointCount += 2
for threePointLetter in enterLetter:
pointCount += 3
print("You have a total of " + str(pointCount) + " points!")
enterLetter = input("Enter another letter: ").lower()
如果我保留其中一个“for”循环,后者似乎会按预期工作。但如果我保留所有三个,程序只会将所有值相加并最终为输入的每个字母得到 6 分(d = 6 分,afe = 18 分)。
对此有更好的解决方案吗?
你的第一个代码有效,但你应该在 while 循环之外初始化 pointCount
我建议为此使用字典:
letterPoints = {"a":1, "b":1, "c":1, "d":2, "e":2, "f":3}
pointCount = 0
while True:
enterLetter = input("Enter a letter: ").lower()
if enterLetter == "stop": break
pointCount += letterPoints.get(enterLetter,0)
print("You have a total of", pointCount, "points!")
您的第一次编码尝试检查输入是否在点列表中。 “a”在列表中,因此得一分。 “f”也在列表中,因此得 3 分。但是,“咖啡馆”不在任何列表中。
你需要找到一种方法来遍历输入单词的每个字母,并检查它们应该添加到 pointsCounter 的点数。
onePointLetters = ["a", "b", "c"]
twoPointLetters = ["d", "e"]
threePointLetters = ["f"]
enterWord = input("Enter a letter: ").lower()
while enterWord != "stop":
pointCount = 0
# Loop through every letter of the word entered
for letter in enterWord:
# Adds points to pointCount according to the pointsystem
if letter in onePointLetters:
pointCount += 1
elif letter in twoPointLetters:
pointCount += 2
elif letter in threePointLetters:
pointCount += 3
print("You have a total of " + str(pointCount) + "
points!")
enterWord = input("Enter another letter: ").lower()
是的,您可以使用字典将每个字母映射到其对应的分值。这是一个使用字典的示例代码:
pointValues = {'a': 1, 'b': 1, 'c': 1, 'd': 2, 'e': 2, 'f': 3}
enterLetter = input("Enter a letter: ").lower()
while enterLetter != "stop":
pointCount = 0
for letter in enterLetter:
if letter in pointValues:
pointCount += pointValues[letter]
print("You have a total of " + str(pointCount) + " points!")
enterLetter = input("Enter another letter: ").lower()
此代码创建一个字典 pointValues ,将每个字母映射到其对应的点值。然后,对于用户输入的每个字母,代码检查该字母是否在字典中,如果在,则将其分值添加到总 pointCount 中。这样,您就不需要为每个点值都有单独的列表,并且代码可以处理包含多个字母的输入字符串。