Я очень новичок в программировании, поэтому решил начать с Python около 4 или 5 дней назад. Я наткнулся на вызов, который попросил меня создать игру «Угадай номер». После завершения «сложной задачей» было создание угадывания номера игры, которую пользователь создает для числа и оценки (ИИ) компьютера.Угадайте число оптимизации игры (пользователь создает число, компьютерные догадки)
До сих пор я придумал это, и он работает, но это может быть лучше, и я объясню.
from random import randint
print ("In this program you will enter a number between 1 - 100."
"\nAfter the computer will try to guess your number!")
number = 0
while number < 1 or number >100:
number = int(input("\n\nEnter a number for the computer to guess: "))
if number > 100:
print ("Number must be lower than or equal to 100!")
if number < 1:
print ("Number must be greater than or equal to 1!")
guess = randint(1, 100)
print ("The computer takes a guess...", guess)
while guess != number:
if guess > number:
guess -= 1
guess = randint(1, guess)
else:
guess += 1
guess = randint(guess, 100)
print ("The computer takes a guess...", guess)
print ("The computer guessed", guess, "and it was correct!")
Это то, что случилось на моем последнем прогоне:
Введите номер для компьютера, чтобы догадаться: 78
Компьютер принимает догадку ... 74
Компьютер принимает догадка ... 89
Компьютер берет догадки ... 55
Компьютер берет догадки ... 78
Компьютер угадал 78, и все было правильно!
Обратите внимание, что, хотя компьютер угадал 74, он затем угадал большее число до 89. Это число слишком велико, поэтому компьютер угадывает меньшее число, однако выбранное число равно 55. Есть ли способ, который Я могу вычислить компьютер числом ниже 89, но выше 74? Будет ли это требовать дополнительных переменных или более сложных if, elif, else statement?
Спасибо Райана Haining
Я использовал код от вашего ответа и изменил его немного, так что догадка всегда случайна. Если вы видите это, сообщите мне, если это лучший способ сделать это.
from random import randint
def computer_guess(num):
low = 1
high = 100
# This will make the computer's first guess random
guess = randint(1,100)
while guess != num:
print("The computer takes a guess...", guess)
if guess > num:
high = guess
elif guess < num:
low = guess + 1
# having the next guess be after the elif statement
# will allow for the random guess to take place
# instead of the first guess being 50 each time
# or whatever the outcome of your low+high division
guess = (low+high)//2
print("The computer guessed", guess, "and it was correct!")
def main():
num = int(input("Enter a number: "))
if num < 1 or num > 100:
print("Must be in range [1, 100]")
else:
computer_guess(num)
if __name__ == '__main__':
main()
Разве это не должно работать наоборот? Компьютер выбирает номер, пользователь догадывается? – hivert
Как правило, «сложная задача» заключалась в том, чтобы переключить этот аспект программы. Предоставление пользователю возможности выбрать номер и компьютер (AI) для угадывания. – mccdlibby
Привет @mccdlibby. Вышеупомянутая задача имеет решение python на Code Rosetta здесь: http://rosettacode.org/wiki/Guess_the_number/With_feedback_(player)#Python Если вам понравилось, вы можете взглянуть на задача «Быки и коровы», которая является продолжением этой задачи. – Paddy3118