2016-07-23 3 views
0

Это мой код для игры, в которой компьютер должен угадать определенный пользователем номер в заданном диапазоне. Это вызов из курса/книги для начинающих.Компьютер угадывает выбранный пользователем номер в пределах определенного диапазона

Я хотел бы обратить ваше внимание на функцию computerGuess(). Я думаю, что должен быть более красноречивый способ добиться того же результата? То, что я смотрю на меня, как на работу!

Назначение функции - вернуть средний элемент в списке (отсюда среднее число в диапазоне номеров, из которого выбирается компьютер). 0.5 в переменном переменной «index» я добавил, потому что в противном случае происходит преобразование из float-int, число будет округлено.

Спасибо.

Код:

# Computer Number Guesser 
# By Dave 
# The user must pick a number (1-100) and the computer attempts to guess 
# it in as few attempts as possible 


print("Welcome to the guessing game, where I, the computer, must guess your\ 
number!\n") 
print("You must select a number between 1 and 100.") 

number = 0 
while number not in range(1, 101): 
    number = int(input("\nChoose your number: ")) 

computerNumber = 0 
computerGuesses = 0 
higherOrLower = "" 
lowerNumber = 1 
higherNumber = 101 

def computerGuess(lowerNumber, higherNumber): 
    numberList = [] 
    for i in range(lowerNumber, higherNumber): 
     numberList.append(i) 
    index = int((len(numberList)/2 + 0.5) -1) 
    middleValue = numberList[index] 
    return middleValue 


while higherOrLower != "c": 
    if computerGuesses == 0: 
     computerNumber = computerGuess(lowerNumber, higherNumber) 
    elif higherOrLower == "l": 
     higherNumber = computerNumber 
     computerNumber = computerGuess(lowerNumber, higherNumber) 
    elif higherOrLower == "h": 
     lowerNumber = computerNumber + 1 
     computerNumber = computerGuess(lowerNumber, higherNumber) 


    print("\nThankyou. My guess is {}.".format(computerNumber)) 
    computerGuesses += 1 
    higherOrLower = input("\nHow did I do? If this is correct, enter\ 
'c'. If your number is higher, enter 'h'. If it is lower, enter 'l': ") 

print("\nHaha! I got it in {} attempt(s)! How great am I?".format\ 
     (computerGuesses)) 

input("\n\nPress the enter key to exit.") 
+1

Поскольку вы просите более элегантный способ достижения своей цели, этот вопрос будет более уместным для сайта обзора кода, а не для этого. –

+0

Это, вероятно, принадлежит сайту [code review] (http://codereview.stackexchange.com/). –

+0

Это может быть по теме для обзора кода Stack Exchange, предполагая, что ** A) ** работает код ** и B) ** это не гипотетично или не является каким-либо образом – Quill

ответ

0

Как это?

import math 

def computerGuess(lowerNumber, higherNumber): 
    return int((lowerNumber+higherNumber)/2) 
+0

Какой смысл создавать полный список чисел? Медиана может быть рассчитана только из минимума и максимума диапазона. – ChrisP

+0

прав :) моя ошибка :) Я просто сводил к минимуму его код, не ища цели функции :) –

Смежные вопросы