简体   繁体   English

名单没有加起来

[英]The list does not add up

I am creating a random number generator.我正在创建一个随机数生成器。 I want to add up the guess tries I had for different trials and find the average.我想将我在不同试验中的猜测次数相加并找到平均值。 However, when I add up the list, it will only calculate how many guesses I had for the first trials divided by the number of trials.但是,当我将列表加起来时,它只会计算我对第一次试验的猜测次数除以试验次数。 How could I fix this problem?我该如何解决这个问题?

import random
import string

#get the instruction ready
def display_instruction():
    filename = "guessing_game.txt" 
    filemode = "r"
    file = open(filename, filemode)
    contents = file.read()
    file.close()
    print(contents)

#bring the instruction
def main():
    display_instruction()
main()

#set the random letter
alpha_list = ['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','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']
letter = random.choice(alpha_list)
print(letter)

guess = ''
dist = []
number_of_guess = []
number_of_game = 1
guess_number = 1
game = True
if guess_number < 5:
    rank = 'expert'
elif guess_number >= 5 and guess_number < 10:
    rank = 'intermidiate'
else:
    rank = beginner
while game == True:
    guess_number = int(guess_number)
    guess_number += 1
    #add the input of user
    guess = input("I am thinking of a letter between a and z" + "\n" + "Take a guess ")
    #what happens if it is not a letter?
    if guess not in alpha_list:
        print("Invalid input")   
    elif alpha_list.index(guess) > alpha_list.index(letter):
        print("too high")
        dist.append(alpha_list.index(guess) - alpha_list.index(letter))
        number_of_guess.append(guess)
    #what happens if the guess is less than the letter?
    elif alpha_list.index(guess) < alpha_list.index(letter):
        print("too low")
        dist.append(alpha_list.index(letter) - alpha_list.index(guess))
        number_of_guess.append(guess)
    elif guess == letter:
        print("Good job, you guessed the correct letter!")
        guess_number = str(guess_number)
        print("---MY STATS---" + "\n" + "Number of Guesses:", guess_number + "\n" + "Level", rank)
        replay = input("Would you like to play again? Y/N")
        if replay == 'y' or replay == 'Y':
            number_of_game += 1
            game = True
        else:
            game = False
            print(number_of_guess)
            print("---MY STATS---" + "\n" + "Lowest Number of Guesses:" + "\n" + "Lowest Number of Guesses:" + "\n" + "Average Number of Guesses:", str(len(number_of_guess)/number_of_game))

If you want to get the average guesses per game, why you divide the length of the guess list?如果你想得到每场比赛的平均猜测,为什么要划分猜测列表的长度 Why it is even a list?为什么它甚至是一个列表? You can save it as an int do:您可以将其保存为 int do:

... "Average Number of Guesses:", (number_of_guess / number_of_game))

Also, note the following:另外,请注意以下事项:

  1. You initialize number_of_guess with 1, means that you will always count one more guess for the first round.您将number_of_guess初始化为 1,这意味着您将始终为第一轮多计算一个猜测。
  2. You do not choose a new letter between each round!你不要在每一轮之间选择一个新字母!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM