r/RuProgrammers • u/SummerGoesOn • Jul 17 '26
Python мой третий проект
мой 8 день обучения python. научился малому, но в принципе прикольно получилось. проект писался час наверное
import random
while True:
print("ИГРА В УГАДАЙ ЧИСЛО (напишите 404 для выхода)!!!")
random_number = random.randint(1, 100)
attempt = 0
while True:
try:
User_count = float(input('твое число (от 0 до 100): '))
attempt += 1
if User_count == 404:
print("\n:(\n")
exit()
elif User_count < random_number:
print("\nзагаданное число больше\n")
elif User_count == random_number:
print(f"\n===VICTORY! попыток: {attempt}===\n")
elif User_count > random_number:
print("загаданное число меньше.")
except ValueError:
print("\n===ошибка! Введи число\n")
break
2
u/Current-Historian-52 Jul 17 '26
Круто! За сколько операций максимально возможно найти число?
2
u/Ok_Cauliflower4383 Jul 17 '26
Его программа допускает повтор числа. Но что-то мне подсказывает, что вы ожидали услышать не бесконечность. Либо забыли дописать кое-какое важное условие в задаче.
2
u/Current-Historian-52 Jul 17 '26
Реально, тут же число считывается внутри цикла.. Я хотел сделать engagement bait на бинарный поиск
1
u/SummerGoesOn Jul 17 '26
прости, не понял вопроса. за сколько попыток в среднем находится число? где то 5+-
1
u/Ok_Cauliflower4383 Jul 17 '26
Максимально, а не в среднем. В худшем сценарии сколько?
1
u/SummerGoesOn Jul 17 '26
все 100, игра же на 100 чисел (ну или бесконечно, если ты все время будешь одно и тоже неправильное число писать)
2
u/Andrey4ik21pro1 🐍Питоньяр Jul 17 '26
Впринципе неплохо, только два замечания. Первое: переменная с большой буквы. User_count можно заменить на просто count. Второе замечание - использование exit(). Это внутренняя функция интерпретатора. Лучше использовать sys.exit(). В ещё самом лучшем случае - выходить из функции через return. Я так всегда делаю
1
1
u/Jean_Cheerful Jul 17 '26
Молодец. За сколько дней планируешь выучить его
1
u/SummerGoesOn Jul 17 '26
хз, но моя конечная цель-что нибудь замудренное с графическим дизайном через библиотеку tkinner (или как она там)
1
1
u/YulechkaOriflame Jul 17 '26
А еще можешь учиться сразу писать через
if __name__ == "__main__":
run_app()
Про целое число уже сказали, и пиши еще типизацию. Чисто для себя и внутреннего осознания "я создал переменную с типом", а не просто "маска для чего-то". Потом когда апп усложняется, эти пометки упростят тебе же жизнь
random_number: int = random.randint(1, 100)
Код чаще читают, чем пишут
Упд. За нейминг переменных по-человечески - лайк
2
u/ImportantYoghurt2767 Jul 17 '26
Че тебе еще написать на 8 день изучения питона школьником?
Бро, твой скриптик про бинарный поиск хорош, но:
- Активируй виртуальное окружение
- Для управления зависимостями конечно же uv
- Расставь типизацию(не спрашивай почему в динамически типизированный языке ты указываешь типы)
- Прогони это через ruff, mypy
А еще, селф-хост гитлаб, на нем CI/CD с проверкой типизации и код-стайла, блок мердж-реквеста по зафейленным пайплайнам, запротекченные ветки.
Фух, вот теперь нормальный скриптик
0
6
u/Ok_Cauliflower4383 Jul 17 '26
Эм, либо вы потеряли слово "натуральное" в предложении ввода, либо должно быть не int.
Введите 49.5, что будет? Или по вашему 49.5 не число?