2017-02-10 2 views
0

У меня есть задача сделать игру против компьютера. Я должен «думать о числе», и компьютер должен угадать. Если он правильно догадался, я должен сказать C и выйти из цикла. В случае меньшего числа, я должен сказать L, и компьютер должен попытаться создать меньшее число. H - выше, и это противоположная ситуация. До сих пор мне удалось успешно реализовать все за одним исключением. С приведенным ниже кодом, если я скажу компьютеру L, например, он не будет превышать предел последнего числа, однако, если я тогда скажу H, он будет случайным образом генерировать числа снова. Пожалуйста, имейте в виду, что это задача для курса для начинающих (функции еще не покрыты). Мы должны использовать циклы. Для функций getInteger и getLetter не обращайте внимания, они являются функциями, которые наш профессор создал и похожими на input(), но просто ограничивают пользователя вводить что-то отличное от буквы или целого.Python 3/eli5 - Случайные числа игра против компьютера

Вот код:

from pcinput import getLetter, getInteger 
from random import random, randint, seed 


mynum = getInteger("My number is:") 


comnum = randint(0, 1000) 
print("Is your number:", comnum, "?") 

while True: 
    answer = getLetter("That is: ") 
    if answer == "C": 
     print("Congratulations!") 
     break 
    if answer == "L": 
     comnum = randint(0,comnum) 
     print("Is your number:", comnum, "?") 
     possibility = range(comnum,) 
     continue 
    elif answer == "H": 
     comnum = randint(comnum, 1000) 
     print("Is your number:", comnum, "?") 
     continue 

* comnum это буква компьютер должен входить

Мой вопрос заключается в основном как исправить этот код так, что компьютер будет создавать какую-то диапазоне между первым и последним догадками и не превышать или опускаться ниже этого, тем самым каждый раз сокращая интервал между догадками. (Надеюсь, вы поняли мое мнение).

Большое вам спасибо!

ответ

0

Мой метод будет (начиная с кода):

from random import random, randint, seed 
mynum = int(input("My number is: ")) 

maximum = 1000 
minimum = 0 

while True: 
    comnum = randint(minimum, maximum) 
    print("Is your number:", comnum, "?") 
    answer = input("That is ") 
    if answer == "C": 
     print("Congratulations!") 
     break 
    if answer == "L": 
     maximum = comnum - 1 
     continue 
    elif answer == "H": 
     minimum = comnum + 1 
Смежные вопросы