Форум сайта python.su
Всем здравствуйте пытаюсь решить задачку, и что то у меня затыка
Суть в общем то простая
import random def game(): i = 1 while i < 5: name = input('Как вас зовут? ') sn = random.randint(1, 50) print('И так ' + name + ' , я загадал число от 1 до 50') attempts = 0 for attempts in range(6): guess = input('Введите число: ') guess = int(guess) if guess > sn: print('Ваше число больше') if guess < sn: print('Ваше число меньше') if guess == sn: break if guess == sn: print('Поздравляю вас ' + name + ' вы угадали и выиграли!!') if guess != sn: print('Примите мои собалезнования вы ' + name + 'проиграли') playAgain = input('Хотите повторить(Д или Н): ') if (playAgain == 'n') or (playAgain == 'н'): i = 6 game()
Офлайн
keeper80Ну тут форум новичков и я ещё больший новичок чем ты, так что бить тебя тут никто не будет.
Всем здравствуйте пытаюсь решить задачку, и что то у меня затыкаСуть в общем то простая
Офлайн
0ppa
Грубо говоря я дошел до такого
import random as RND def getNumRnd(): number = RND.randint(1,50) return number def rules(number,guess): attempts = 5 while attempts == 0: print(attempts) if guess == number: attempts = 0 return f'you win' elif guess > number: attempts -= 1 return f'Ваше число {guess} больше' elif guess < number: attempts -= 1 return f'Ваше число {guess} меньше' def game(): pl_name = input('Введите ваше имя: ') number = getNumRnd() print(f'И так {pl_name} я загадал число от 1 до 50') guess = input('Введите ваше число :') return rules(number,int(guess)) game()
Офлайн
keeper80Ну тут я тебе не помогу конечно. Может кто другой сможет. Но все равно твой ответ для меня звучит странно, как будто ты сначала написал код, а теперь пытаешься придумать условие задачи. Если у тебя есть условие, выкладывай. Вообще могу порекомендовать из того, что сам делаю https://python.su/forum/topic/35603/?page=1 - это робот по Лекциям от Тимофея Федоровича. Почитай тему порешай задачи, больше будешь понимать в целом. Вот например сообщение от py.user.next https://python.su/forum/topic/35603/?page=3#post-199278 про декомпозицию.
А хотелось бы что бы при активации(обьявлении) одной функции(game()) запускались остальные функции по мере надобности, допустим def rules по идее нужно еще разбить на несколько функций, и вот не могу сообразить как мне что наз-ется на листочке накатать планчик, общий план:
Угадать число, при наз-ии числа делать подсказку больше или меньше число
А вот как по функциям все это разбить что то не получается от слова совсем!(((
Офлайн
0ppa
Вот и пытаюсь это сделать, но так как сама конструкция очень простая, то и возникают затыки, но за ссылку спасибо, буду посмотреть!
Офлайн
Желательно по фичам бить
def gess_is_ok(gess,num): if gess<num: print("<") retrn False if gess>num print(">") retrn False print("Ok!!") retrn True def game(): num=RND() for i in range(5): # num try gess = int(input("gess number")) if gess_is_ok(gess,num): break print("fail")
Офлайн
Это суть игры
игра() а = неизвестное_число() для i из диапазона(5): б = число_пользователя() если сравнение(а,б) == Истина выигрыш() закончить проигрыш()
функция неизвестное_число(): число = рандомное_число() # в своем коде ты используешь random.randint(1, 50) вернуть число
функция число_пользователя(): строка = ввод в консоль(введите число) если строка.является_числом() число = int(строка)#приводим к нужному типу данных с которым будем работать, вернуть число
Офлайн
doza_and
xam1816
Спасибо, накатал, но возникла проблема и ни как не могу понять почему именно так происходит
import random as RND def getNumRnd(): number = RND.randint(1,50) return number def rul_1(): answer = 'Ваше число меньше' return answer def rul_2(): answer = 'Ваше число больше' return answer def win(): print('Вы выиграли! ') def game_over(): i = 2 while i > 1: pl = input('Хотите начать заново? (да\нет)') if pl == 'да' or pl == 'д': game() else: i = 0 print('GOODBYE') def pl_input(number): number = input('Введите ваше число: ') return int(number) def game(): pl_name = input('Введите ваше имя: ') number = getNumRnd() print(f'SN = {number}') print(f'И так {pl_name} я загадал число от 1 до 50') for i in range(5): guess = pl_input(number) #input('Введите ваше число :') if guess > number: print(rul_2()) elif guess < pl_input(number): print(rul_1()) elif guess == pl_input(number): win() break game_over() game()
Офлайн
keeper80вам нужно разобраться с функциями.Вы плохо понимаете как они работают
что я упускаю
def pl_input(number): number = input('Введите ваше число: ') return int(number)
number = getNumRnd() print(f'SN = {number}') print(f'И так {pl_name} я загадал число от 1 до 50') for i in range(5): guess = pl_input(number)
elif guess < pl_input(number): print(rul_1())
Отредактировано xam1816 (Окт. 11, 2020 17:07:22)
Офлайн
Так вроде понял ошибку, но при выигрыше с первого раза приходиться дважды подтверждать выход, в чем трабла????
import random as RND def getNumRnd(): sn = RND.randint(1,50) return int(sn) def rul_1(): answer = 'Ваше число меньше' return answer def rul_2(): answer = 'Ваше число больше' return answer def win(): print('Вы выиграли! ') game_over() def game_over(): i = 2 while i > 1: pl = input('Хотите начать заново? (да\нет)') if pl == 'да' or pl == 'д': game() else: i = 0 print('GOODBYE') def pl_input(): num = input('Введите ваше число: ') return int(num) def game(): pl_name = input('Введите ваше имя: ') sn = getNumRnd() print(f'SN = {sn}') print(f'И так {pl_name} я загадал число от 1 до 50') for i in range(5): guess = pl_input() #input('Введите ваше число :') if guess > sn: print(rul_2()) elif guess < sn: print(rul_1()) elif guess == sn: win() break game_over() game()
Офлайн