Найти - Пользователи
Полная версия: подскажите по 2 простым задачкам
Начало » Центр помощи » подскажите по 2 простым задачкам
1 2
gambrinas13

про range забыл действительно: оно ведь последнее число не включает.
Исправил переменную high на 6, программа все равно продолжает мне предлагать ввести числа, даже если я угадал его.
Сам цикл неправильно составлен? Да и условие 1 задачи я правильно понял. код выполняет поставленную задачу?
PEHDOM
все должно работать если поменять кусок
 while response != number:
    if response > number:
        print("Меньше")
    else:
        print("Больше")
        ask_number("Ваше число:",low,high)
        tries += 1
на тот что я писал
  while response != number:
    if response > number:
        print("Меньше")
    else:
        print("Больше")
    response = ask_number("Ваше число:",low,high)
    tries += 1
и обратите внимание на отступы
response = ask_number(“Ваше число:”,low,high)
tries += 1
должны быть вне блока if else..
gambrinas13
PEHDOM
все должно работать если поменять кусок
Благодарю. все теперь работает корректно. Хотелось бы узнать также ваше мнение по первой задаче с шагом.
PEHDOM
gambrinas13
Хотелось бы узнать также ваше мнение по первой задаче с шагом.
range принимает третьим параметром шаг, range(1,10,2) вернет 1,3,5,7,9
gambrinas13
PEHDOM
Значит мой вариант неверен и указывать шаг нужно было в функции range?

Да и вот попробовал усовершенствовать данную задачу используя основной цикл как функцию, с учетом всего, она корректно не работает.

import random
number = random.randint(1,5)
tries = 1
low = 1
high = 6

def ask_number(question,low,high):
response = None
while response not in range(low,high,1):
response = int(input(question))
return response

def main():
global tries
response = ask_number("Ваше число:",low,high)
while response != number:
if response > number:
print("Меньше")
else:
print("больше")
ask_number("Ваше число:",low,high)
tries += 1
main()

print("Это действительно",number)
print("Вы затратили",tries,"попыток)
input("\n\nНажмите Enter, чтобы выйти")

Здесь я получается, создал основную функцию, которая вызывает другую, обозначил переменную tries
глобальной, с отступами все тоже в порядке(цикл выполняется пока не будет число не будет угадано, после чего работа основной функции завершается и на экран выводится угаданное число). Но что-то
по-прежнему не так.
PEHDOM
gambrinas13
Значит мой вариант неверен и указывать шаг нужно было в функции range?
нет, ренджу нужно было передать аргумент функции, в задаче стоит “Доработайте функцию ask_numЬer() так, чтобы ее можно было вызывать еще с одним параметром -
кратностью”
 .....
def ask_number(question ,low ,high, step = 1):
.....
     while response not in range(low, high, step):
gambrinas13
Но что-то по-прежнему не так.
у вас response не обновляется, он отаеться таким какой ответ получен первый раз…
 def main():
    global tries          # Глобальная переменная счетчик попыток
    response = ask_number("Ваше число:",low,high) # спрашиваем ответ и помещаем результат в переменную response
    while response != number:  # пока response не равен загаданому числу цикл
        if response > number:    # Если ответ меньше загаданого числа
            print("Меньше")         # пшем Меньше
        else:                            # иначе 
            print("больше")         #  пишем больше
        ask_number("Ваше число:",low,high)  # спрашиваем ответ, результат уходит в страну про@баных переменных
        tries += 1                                         # Увеличиваем счетчик на 1
gambrinas13
PEHDOM
Огромное спасибо за ваше терпение и помощь. Все работает теперь. Невнимательность сильно подводит конечно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB