根据输入的总长度进行评分

2024-09-28 20:18:57 发布

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

预期产量

  • 输入:“人”,然后得分=3
  • 输入:“你好”,然后得分=4
  • 输入:“配给”,然后得分=8

但它只会输出0

score = 0
guess_word = input("Guess a word: ")
secret_word = ["man","hello","brunch","awesome","great","estuary","rationed"]
while guess_word == secret_word:
    if len(guess_word) == 2 and len(guess_word) ==3 :
        score += 1
    elif len(guess_word) == 4:
        score += 2
    elif len(guess_word) == 5:
        score += 3
    elif len(guess_word) == 6 and len(guess_word) == 7:
        score += 5
    elif len(guess_word) == 8:
        score += 8
print(f"your score: {score}")

Tags: andhelloinputsecretlenwordawesomescore
1条回答
网友
1楼 · 发布于 2024-09-28 20:18:57

首先,将字符串与列表进行比较。因此,与其这样做

while guess_word == secret_word:

您应该使用in

if guess_word in secret_word:

其次,如果你像以前那样使用一段时间,它将停留在一个无限循环中

while guess_word == secret_word:

因此,要么像我所做的那样将其更改为if(单次迭代)

if guess_word in secret_word:

或者将guess_word = input(guess_word)放在while-true循环中(多次迭代)

while True:
    guess_word = input("Guess a word: ")
    if guess_word not in secret_word:
        break

这允许guess_word得到更新

最后但并非最不重要的一点是,如果您输入man,您将只获得由以下代码确定的+1分:(顺便说一句,您应该使用or,因为len(guess_word) == 2 or len(guess_word) ==3是互斥的)

if len(guess_word) == 2 or len(guess_word) ==3 :
    score += 1

如果你想根据你给出的分数来增加分数,你应该这样做

score += len(guess_word)

总之,您的代码看起来像:

score = 0
secret_word = ["man","hello","brunch","awesome","great","estuary","rationed"]
while True:
    guess_word = input("Guess a word: ")
    if len(guess_word) == 2 or len(guess_word) ==3 :
        score += len(guess_word)
    elif len(guess_word) == 4:
        score += len(guess_word)
    elif len(guess_word) == 5:
        score += len(guess_word)
    elif len(guess_word) == 6 and len(guess_word) == 7:
        score += len(guess_word)
    elif len(guess_word) == 8:
        score += len(guess_word)

    if guess_word not in secret_word:
        break
    print("Congrats! Your score is now " + str(score))

print(f"Your Final score: {score}")

相关问题 更多 >