Список догадок Python - PullRequest
       13

Список догадок Python

1 голос
/ 01 сентября 2011

Я только изучаю Python, и я написал это, но я хочу показать все догадки и, может быть, они слишком высоки или низки.В части responseList мне нужна помощь.Спасибо!

    import random, easygui

    secret = random.randint (1, 100)
    guess = 0
    tries = 0

    easygui.msgbox ("""Guess the secret number.
    It is from 1 to 99. You have five tries.  Get Guessin' !""")

    while guess != secret and tries < 5:
        user_response = guess = easygui.integerbox ("C'mon...GUESS!!! ")

        if not guess: break
        if guess <= (secret + 5) and guess > secret:
            easygui.msgbox(str(guess) + " is too HIGH... but you're close!")
        if guess >= (secret - 5) and guess < secret:
            easygui.msgbox(str(guess) + " is too LOW... but you're close!")        
        if guess < (secret - 5):
            easygui.msgbox(str(guess) + " is too LOW... Guess higher")        
        if guess > (secret + 5):
            easygui.msgbox (str(guess) +  " is too HIGH...Guess lower")

        tries = tries + 1

        responseList = [user_response]
        easygui.msgbox (responseList)

    if guess == secret:
        easygui.msgbox ("Darn!  You got it!")

    else:
        easygui.msgbox ("Ha, Ha, Ha!  No more guesses!  To the firin' squad with ya!")
        easygui.msgbox (str(secret) + " was the secret number")

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

Я предполагаю, что вы хотите, чтобы responseList содержал список всех ответов пользователя.Вы не написали это.:)

Вам нужно будет установить responseList на пустой список в начале, а затем append каждый новый ответ на него.

responseList = [user_response] просто установить его в один элементсписок каждый раз.Очевидно, вы получите список из одного элемента с последним ответом.

1 голос
/ 01 сентября 2011

EasyGUI не является частью стандартного дистрибутива Python. Вы можете скачать его с SourceForge здесь http://easygui.sourceforge.net/. Он устанавливается в установку Python (x, y) с первой попытки с использованием только «setup.py install». Чтобы ваш список вел себя так, как вы ожидаете, попробуйте эту версию:

import random, easygui

secret = random.randint (1, 100)
guess = 0
tries = 0

easygui.msgbox ("""Guess the secret number.
It is from 1 to 99. You have five tries.  Get Guessin' !""")

responseList = []

while guess != secret and tries < 5:
    user_response = guess = easygui.integerbox ("C'mon...GUESS!!! ")

    if not guess: break
    if guess <= (secret + 5) and guess > secret:
        easygui.msgbox(str(guess) + " is too HIGH... but you're close!")
    if guess >= (secret - 5) and guess < secret:
        easygui.msgbox(str(guess) + " is too LOW... but you're close!")        
    if guess < (secret - 5):
        easygui.msgbox(str(guess) + " is too LOW... Guess higher")        
    if guess > (secret + 5):
        easygui.msgbox (str(guess) +  " is too HIGH...Guess lower")

    tries = tries + 1

    responseList.append(user_response)
    easygui.msgbox (",".join(["%d"%x for x in responseList]))

if guess == secret:
    easygui.msgbox ("Darn!  You got it!")

else:
    easygui.msgbox ("Ha, Ha, Ha!  No more guesses!  To the firin' squad with ya!")
    easygui.msgbox (str(secret) + " was the secret number")

инициализируйте responseList в виде списка вне цикла, затем добавляйте к нему каждое число по мере необходимости. Я добавил несколько запятых, чтобы разделить ваши номера в msgbox для бонуса. ;)

1 голос
/ 01 сентября 2011

Инициализировать responseList перед циклом while guess != secret and tries < 5:.В цикле вы можете append кортежей до responseList, содержащих предположение, и если оно было слишком высоким или низким (используйте переменную, скажем where, для хранения значения 'HIGH' или 'LOW').Затем за пределами цикла while покажите отформатированные результаты, с easygui.msgbox:

responseList = []
while guess...:
    user_response = ...
    if not...
    if guess <=...
        where = 'HIGH'
    if guess >=...
        where = 'LOW'
    if guess <...
        where = 'LOW'
    if guess >...
        where = 'HIGH'


    tries...
    responseList.append((guess, where))

responseString = ', '.join([ '%d (%s)' % (guess, where)
                             for guess, where in responseList])
easygui.msgbox(responseString)

эта строка с responseString будет List Compceptionsion , котораяВы можете прочитать или спросить здесь.

...