Как сделать русскую рулетку на питоне
Пару дней назад закончил писать «Русскую рулетку». Всеми игроками управляет человек, музыки нет и т.д., предупреждаю сразу. Создал я эту программу для своих нужд, но надеюсь, что она кому-то пригодится.
Под спойлером находится видео геймплея.
Вложения rr_alpha.zip Игра для Linux (14.66 КБ) Скачиваний: 30 russian_roulette_win.zip Игра для Windows (7.37 МБ) Скачиваний: 100
Последний раз редактировалось Gamer 13.10.2022, 13:35, всего редактировалось 1 раз.
Gamer Репутация: +46/-3 Сообщения: 369
Сыграл — недурно, напомнило игру на Бэйсике — там были боты, которых тут нет.
Student_25 Репутация: 0 Сообщения: 54
Подоспел маленький фикс — он исправляет некоторые ошибки в логе, который ведёт игра. Если у вас Windows с интерпретатором Python или вы используете Linux, просто перекачайте файл с исходным кодом и разархивируйте в папку с игрой. Код на гитхабе тоже исправлю.
Я хочу сделать чат рулетку на python в своём исполнении с помощью #TeleBot (telebotapi)
Я хочу сделать чат рулетку с помощью Telegram бота (TeleBotApi) Сделал тип БД из словаря, (код приложу ниже) в общем юзер вводит число (от 1 до 1000000) и если другой человек ввёл это же число то их соединяет вместе и они общаются. Сделал разные условия и проверки для того чтобы пользователь ввёл именно число и число в топ диапазоне который я задавал. Так вот я хочу сделать чтобы в словаре хранилось в качестве ключа число (то что ввёл юзер), а в качестве значения список который состоит из id чатов. Так вот мне надо сделать проверку если в массиве уже есть данное число то соединить их вместе, если в массиве есть данное число, но люди уже общаются то выдать ошибку, если же такого число нет то создать его и добавить его в словарь -> . Я пытался сам что то реализовать но пока оно работает не так как я ожидал (тупо ошибка). Так вот чуток кода ниже (код не весь!): (мне нужны проверки и функционал (но функционал не обязательно, просто если вам не сложно) рулетки) (и да пишу я на TeleBot не давно, поэтому тапками не бросать).
tconv = lambda x: time.strftime("%H:%M:%S %d.%m.%Y", time.localtime(x)) rulette = activ = ["none"] def call_message(message): global activ print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " использует /call") if str(message.chat.type)=="private": print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " Чат является приватным!") for i in activ: if str(i) == str(message.chat.id): print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " При использовании /call произошла ошибка!") bot.send_message(message.chat.id, "Похоже вы уже в звонке!") break else: print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " При использовании /call всё было хорошо!") bot.send_message(message.chat.id, "В следующем сообщении введите число от 1 до 100000 и следуйте инструкциям") bot.register_next_step_handler(message, next_call) else: print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " Чат не является приватным!, а является "+str(message.chat.type)) bot.send_message(message.chat.id,"Ошибка похоже чат не является приватным (лс), зайдите в приватный чат(лс). ") def next_call(message): global rulette,activ if str(message.content_type) == "text" and message.text.isdigit(): if int(message.text)1000000 or int(message.text)==1000000: print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + str(message.text)+ "- Число не подходит вышеперечисленным требованиям!") bot.send_message(message.chat.id,"Ваше число ("+str(message.text)+") не подходит требованиям (число должно быть от 1 до 1000000 (милионна))") else: print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @ " + str(message.from_user.username) +" "+ str(message.text) + " - Число подходит вышеперечисленным требованиям!") bot.send_message(message.chat.id,"Ваше число было принято, ожидайте!") time.sleep(1) if str((rulette[str(message.text)])) != str(2): if rullete(rulette,message.text) ==True: print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " Чат не занят") rulette[str(message.text)] = a.append(str(message.chat.id)) print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " Вошёл в чат ("+str(message.chat.id)+")") else: rulette[str(message.text)] = str(message.chat.id) print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + " Создал очередь ("+str(message.text)+")") bot.send_message(message.chat.id,"Так как это число никто из пользователей не написал, то вы 1, просто ждите! (чтобы закончить звонок/ожиданеие собеседника напишите /stopcall)") rulette[str(message.text)] = a[str(message.chat.id),] activ.append(str(message.chat.id)) else: bot.send_message(message.chat.id,"Внимание в этом канале уже общаются 2 участника, пожалуйста введите другое число (ваше число:"+str(message.text)+")") print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + "В этом чате достигнут лимит участников!") else: print("DEBUG " + "time=" + " " + str(tconv(message.date)) + " + str(message.from_user.id) + " name= @" + str(message.from_user.username) + str(message.text)+ "- Строка не подходит вышеперечисленным требованиям!") bot.send_message(message.chat.id,"Ваше сообщение не соответствует критериям!")
Русская рулетка


«Ты должен был возглавить проект, а не покинуть его!»

Поддержать
1 день назад

Пацан к успеху шёл, не получилось, не фартануло

2 дня назад

Чат GPT становится все больше похожим на программистов.

* Код, который ты мне дал, не работает. Можешь исправить?
* У меня всё работает.
2 дня назад

SQL задача про IN и NOT IN с объяснением

Всем отличного начала нового года! Вчера утром в своём Телеграм-канале опубликовал интересную задачу по SQL с собеседования про IN и NOT IN.
С первого взгляда кажущееся правильным решение на самом деле ложно. Чтобы верно ответить в задаче, нужно знать как СУБД обрабатывает элементы множества, указанные для оператора IN / NOT IN в запросе.
Вначале вот текст самой задачи. Ниже я поясню правильное решение:
В таблице CLIENTS пять строк. В первых двух строках в поле CLIENT_TYPE значение 1, ещё в двух строках в CLIENT_TYPE значение 2 и в последней строке поле CLIENT_TYPE не заполнено, то есть в последней строке в поле CLIENT_TYPE значение NULL.
Есть два запроса:
1)
SELECT * FROM CLIENTS WHERE CLIENT_TYPE IN (1)
2)
SELECT * FROM CLIENTS WHERE CLIENT_TYPE NOT IN (2, NULL)
Результирующие наборы данных, полученные в результате выполнения этих запросов, будут одинаковыми или разными?
Здесь поставь чтение на паузу и ответь на вопрос самостоятельно.
На сегодня на канале следующий разброс ответов:

Первый запрос отбирает клиентов, у которых в столбце тип указано значение 1. В результате будут отобраны две строки. Здесь все понятно. Так как в таблице клиентов ещё остаются строки, не попавшие в выбор первого запроса, со значениями в столбце тип 2 и NULL, то видится, что второй запрос должен как раз вернуть такой же результирующий набор данных. Однако, тут дело в коварном NULL в значениях для оператора NOT IN. СУБД представляет оператор NOT IN:
SELECT * FROM CLIENTS WHERE CLIENT_TYPE NOT IN (2, NULL)
в результате должны быть отобраны клиенты, у которых значение в столбце тип не равно каждому из перечисленных во множестве значений:
SELECT * FROM CLIENTS WHERE ( (CLIENT_TYPE <> 2) AND (CLIENT_TYPE <> NULL) )
С NULL не допустимо использовать операторы сравнения. При сравнении с NULL (= NULL, <> NULL) результат будет всегда отрицательным.
Второй запрос не вернёт ни одной строки данных.
Ещё больше полезного и интересного в моём Телеграмм-Канале.
Показать полностью 1
Поддержать
2 дня назад

Тот мир который все заслужили

Поддержать
9 дней назад

Когда пытаешься впихнуть в себя все модные технологии

Поддержать
10 дней назад

Пятничный деплой

Показать полностью 1
20 дней назад

Я ведь ничего не менял

Показать полностью 1
24 дня назад

Кусочек абстрактного искусства

26 дней назад

«Всегда найдется тип данных побольше»

30 дней назад

У каждого грейда свой экран:

1 месяц назад
Хорошая книга про анализ данных — «Python и анализ данных. Третье издание»

Автор: Уэс Маккинни
Количество страниц: 537
Перед вами авторитетное руководство по переформатированию, очистке и обработке наборов данных на Python. Третье издание, переработанное с учетом версией Python 3.10 и pandas 1.4, содержит практические примеры, демонстрирующие эффективное решение широкого круга задач анализа данных. Издание идеально подойдет как аналитикам, только начинающим осваивать Python, так и программистам на Python, еще не знакомым с наукой о данных и научными приложениями.
«В это новое издание Уэс внес изменения, так чтобы книга и дальше оставалась востребованным источником по всем аспектам анализа данных с применением Python и pandas. Горячо и настоятельно рекомендую». — Пол Берри, лектор и автор книги «Head First Python»
Показать полностью 1
1 месяц назад

TaskFailedSuccessfully

Показать полностью 1
2 месяца назад

Ответ на пост «Как я стал программистом в 32 года. Отработал 1 год. Стоит ли оно того?»
Короткий рассказ.
Скорее нет, особенно вначале.
Можно ли получать удовольствие?
Изменяется ли личность?
Да, но у всех по-своему. Иногда это пугает.
Это спокойная работа?
Нифига, нервы нужны крепкие.
Про общение с неприятными людьми можно забыть?
И опять нет, вам хватит руководителей, а заказчики ещё та песня.
Можно ли работать на удаленке?
100% , если вы готовы.
Новые друзья и крутая тусовка прилагаются?
Зависит от выбора компании и отдела в ней.
А что тогда в этом хорошего?
Мой ответ таков, что, умея программировать, я могу наделать себе интересных пет-проектов для души, и чего я всегда желал. Например. Чат бот на языковой модели GPT. Или это. Обучение с подкреплением для биржевой торгашки.
Длинный рассказ.
Я тоже только в 32 стал прогать на работе.
Но не так жестоко было всё. Не с нуля, не из менеджерской роли.
Образование социологическое, диплом по количественным методам. На красную пятёрку. Правда, когда спустя лет 8 я связался с профессором социологии из Урбане-Шампейне, на чьей статье я развивал тему, оказалось, что мой подход был почти полностью калом, с его точки зрения.
А, ну ещё в школе еле вытянул факультатив на бейсике. Вообще с логикой проблемы были лет до 30-35.
6 лет аналитиком данных (эксель), SPSS. И другие статистические пакеты с графическим интерфейсом. Прокачивал скорее матчасть в области анализа, нежели чистую техничку.
Понадобились макросы. Открыл IDE в экселе и прямо такое приятное чувство испытал, когда за долбанными таблицами скрывается ЯП и море возможностей. Visual Basic, если что. Через месяц я написал аж программу, которая прогнозирует продажи и даже общается с 1С.
Потом понадобилось сделать такую штуку для маркетинга, как ассоциированные продажи. Установил R. Про их IDE понятия тогда не имел. Научился в командной строке делать моделирование (a priori). Получилось.
Параллельно прошёл бесплатный курс по SQL , базовые вещи. Начал слегка шурупить в реляционных базах.
На работе застой с повышениями. Плюс антикризисное управление. А у меня кредит большой. Через хаха получил приглашение на мидла статистика. Три вечера читал про проверки гипотез. Собес прошёл. Дали тогда 90 на руки, это 2014 был. Это было не больше, чем я получал. И в карьере бывал и старшим и руководителем группы. Короче, дауншифтнулся конкретно, лишь бы из маркетинговых исследований и анализа свалить.
Сил в 30 лет дофига ещё.
На новой работе начал фигачить нормальную взрослую статистику. Rstudio, и много сложных запросов. Самый прикол — без хороших коллег профессиональный рост очень медленный. Мне дядька у соседнего компа пару раз подсказал по БД и реально как лампочка зажглась в голове.
Потом подняли до старшего, ЗП 115 или 120. Было покомфортнее. Через три года я ушёл по личным причинам плюс менеджеры подпалили мне седло, да и однообразие задач стало добивать просто нереально. Но писал запросы я уже с нормальной оптимизацией.
На новой работе был мидлом с зп 200. Прошёл курс Advanced R (а на ступеньку ниже уже давно прошёл). Курсы от C. a. Там был сложный проект, который я взялся писать на R. За почти полтора года где-то 10-12 тыщ строк. Ушёл по . личным причинам. К меня ещё с эмоциальной стабильностью не всё отлично.
Потом ещё переход на другую работу, там уже были 220 ЗП. Задачи разные, интересные, много исследований. Подключил Python. Ушёл с — бее — Винды и плюсовой среды версионирования на линукс. Наигрался в машинное обучение, глубокие сети. Большие данные немного.
И тут я подзастрял в своей ракушке комфорта. Ну и уже на Python уровень мидла сделал. И 8 лет на R, сениористость детектед.
Выгораний было дофига. В моём случае, в основном, от общения с манагерами. Переход на полную удаленку сделал меня хуже. Хотя через пару лет стало привычно. Как теперь ежедневно бежать в офис на какой-то дейлик я ХЗ!
Не жалею, что ушёл из экселя и маркетинга, там душновато прямо бывало. И ещё раз. Нужны полезные люди вокруг. Меня предупреждали, что в ИТ зае. Ну вы поняли, от однообразных задач. Потом эту же теорию высказал один эксперт: он свалил в Европы за интересной работой, и уже оттуда ныл, что всё уже видел и опять то же самое и тд.
И я вас предупреждаю об этом. А ещё о том, что учить новое надо будет постоянно, если хотите карьерной мобильности. А если вы не гений, то удовольствие от новых вещей вы начнёте получать совсем не сразу а фрустрацию — как раз сразу. А если ещё лид попадётся, повёрнутый на «модненьких штучках», вы будете страдать.
То есть вместо борьбы не на жизнь, а на смерть за руководящую должность я получил через 4 года работу, к которой больше лежит душа. Только живот отрос в процессе.
Проблема со скриптом на Python

Есть маленький скрипт (русская рулетка которая выключает комп). Хочу вставить в него звуки револьвера, в интернете нашел vbs скрипт который запускает звук без плеера. После включения этого vbs скрипта в моем коде, программа не хочет работать дальше и застревает на одном месте. Как можно продолжить работу моей программки?
Лучший ответ
убрать костыль из vbs
Саша МедкоПрофи (504) 2 года назад
А как без vbs включить звук без плеера?

Άηϑρέΰ ҂ Искусственный Интеллект (179649) Саша Медко,
Остальные ответы