아래 소스를 복사 하여

VScode 나 notepad++ 로 roulette.py 로 저장 하신 뒤

command 창에서 python roulette.py 로 실행 하시면 됩니다.

기본으로 게임에서 질 경우 더블배팅(마틴게일) 금액으로 설정 해 놓았습니다

카지노 가시려는 분이 계시다면 룰렛 홀짝(even,odd) 더블 배팅 연습 해보고 가셔요

실행 화면 입니다

# import error 가 날 경우에 각각 pip3 install 해주셔야 합니다.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QLineEdit, QMessageBox
from PyQt5.QtCore import Qt
from random import randint

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setupUI()

    def setupUI(self):
    	# 프로그램 title
        self.setWindowTitle("Roulette")

		# 룰렛에서 나온 숫자
        self.number = QLabel(self)
        self.number.setText('0')
        self.number.move(35, 15)

		# 현재 금액
        self.tmoney = QLabel(self)
        # 시드머니 1000
        self.tmoney.setText('1000')
        self.tmoney.move(30, 40)
        
        # odd and even 구분 변수
        self.bet = QLineEdit(self)
        self.bet.resize(30, 20)
        self.bet.move(70, 45)
        self.bet.hide()

		# betting money
        self.mn = QLineEdit(self)
        # 기본 베팅 금액 15
        self.mn.setText('15')
        self.mn.resize(33, 20)
        self.mn.move(71, 20)

		# odd or even click view
        self.h_z = QLabel(self)
        self.h_z.setText('')
        self.h_z.move(117, 15)

		# start 버튼
        btn1 = QPushButton("START", self)
        btn1.resize(76,20)
        btn1.move(70,70)
        btn1.clicked.connect(self.btn1_clicked)        

		# 초기화 버튼 (돈)
        btn2 = QPushButton("INIT", self)
        btn2.resize(30,20)
        btn2.move(28,70)
        btn2.clicked.connect(self.btn2_clicked) 

		# 홀수 선택
        btnOdd = QPushButton("Odd", self)
        btnOdd.resize(35,20)
        btnOdd.move(70,45)
        btnOdd.clicked.connect(self.btnOdd_clicked) 

		# 짝수 선택
        btnEven = QPushButton("Even", self)
        btnEven.resize(35,20)
        btnEven.move(110,45)
        btnEven.clicked.connect(self.btnEven_clicked) 

	# 홀수 선택 함수
    def btnOdd_clicked(self):
        self.bet.setText('1')
        self.h_z.setText('ODD')

	# 짝수 선택 함수
    def btnEven_clicked(self):
        self.bet.setText('2')
        self.h_z.setText('EVEN')

	# enter 키로 start 버튼 대체
    def keyPressEvent(self, e):
        if e.key() in [Qt.Key_Return, Qt.Key_Enter]: 
            tm, num, status = self.btn1_clicked()
            print(tm, num, status) 

        if e.key() == Qt.Key_Escape:
            print('INIT')
            self.btn2_clicked()

	# 스타트 버튼 함수
    def btn1_clicked(self):
        a = randint(0,36)
        b = self.mn.text()
        c = self.bet.text()
        t = self.tmoney.text()
        if not b:
            self.number.setText(str(a))
            return 0, a, 'none'
            pass
        elif int(t) - int(b) < 0:
            QMessageBox.about(self, "error", "no money")
            return 0, a, 'none'
            pass
        elif not a or int(a) == 0:
            tm = int(t) - int(b)
            self.tmoney.setText(str(tm))
            self.number.setText(str(a))
            self.mn.setText(str(int(b)*2))
            return tm, a, 'lose'
        elif not c or int(c) == 0:
            return t, a, 'zero'
        else:
            if int(c)%2 != int(a)%2:
                tm = int(t) - int(b)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
                self.mn.setText(str(int(b)*2))
                return tm, a, 'lose'
            else:
                tm = int(t) + int(b)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
                self.mn.setText('15')
                return tm, a, 'win'
        
	# 초기화 버튼 함수
    def btn2_clicked(self):
        self.tmoney.setText('1000')
        self.number.setText('0')
        self.mn.setText('15')
        self.bet.setText('')

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()

 

파이썬에는 between 이 없습니다.

그래서 range 로 대체 해서 사용해야 되는데 between 보다 더 간단 합니다.

아래 예제처럼 사용하시면 됩니다.

# 사용 할 수 없는 between 코드
if a between 1 and 4:
	print(a)
    
# between 을 range 로 변경 해서 사용
if a in range(1,4):
	print(a)

아래 예제는 여러개 폴더에 내용이 비슷하고 파일명이 같은 파일이 각각 있어 한꺼번에 돌리는 예제 입니다.

줄 별로 관리 하여 새로 만드는 예제 입니다.

# os Import
import os

# folders 경로에 있는 모든 폴더를 조회 해서 for 문으로 돌림
for i in os.listdir("./folders/"):
    f = open(os.path.join(
            '../../output/string/{}'.format(i), # 각각의 폴더에
            'tutorials.xml', # tutorials.xml 파일을 불러 옴
        ), 'r')
    line = f.readline() # line 에 담고
    new_line = '' # 필요한 값만 넣을 변수 선언
    
    # 아래 항목의 값만 new_line 에 담기
    while line:
        if '<?xml' in line:
            new_line += line
        elif 'important' in line:
            new_line += line
        elif 'subjects' in line:
            new_line += line
        else:
            pass
            
		# 뽑힌 줄 제외 하고 다시 line 에 넣기
        line = f.readline()
	
    f.close()
    
    # 해당 폴더에 파일 덮어 씌우기
    mk = open(os.path.join(
                './folders/{}'.format(i),
                'tutorials.xml',
            ), 'w')
    mk.write(new_line)
    mk.close()

사용 방법입니다. 룰렛을 해보셨다면 쉽게 이해 하실 거에요.

제가 카지노 가서 자주 배팅하는 방법을 python 으로 구현 해 보았습니다.

카지노 룰렛 python 구현

 

아래 소스를 복사 해서

casino.py 파일을 만들고 cmd 창에서 python casino.py 실행 하여 해보세요.

실행 파일을 만들고 싶으시면 pyinstaller 를 사용 하시면 됩니다.

pyinstaller -w -F casino.py

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QLineEdit, QMessageBox
from random import randint

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setupUI()

    def setupUI(self):
        self.setWindowTitle("Roulette")

		# 나온 숫자 label
        self.number = QLabel(self)
        self.number.setText('0')
        self.number.move(30, 15)

		# 보유 금액 label
        self.tmoney = QLabel(self)
        self.tmoney.setText('1000')
        self.tmoney.move(30, 40)
        
        # 배팅 구역 edit
        self.bet = QLineEdit(self)
        self.bet.resize(30, 20)
        self.bet.move(70, 45)

		# 배팅 금액 edit
        self.mn = QLineEdit(self)
        self.mn.setText('100')
        self.mn.resize(30, 20)
        self.mn.move(70, 20)

		# 게임 시작 버튼
        btn1 = QPushButton("Start", self)
        btn1.resize(50,20)
        btn1.move(55,70)
        btn1.clicked.connect(self.btn1_clicked)        

		# 초기화 버튼
        btn2 = QPushButton("Init", self)
        btn2.resize(30,20)
        btn2.move(20,70)
        btn2.clicked.connect(self.btn2_clicked) 

    def btn1_clicked(self):
        a = randint(0,36)
        b = self.mn.text()
        c = self.bet.text()
        t = self.tmoney.text()

        if not b:
            self.number.setText(str(a))
            pass
        elif int(t) - (int(b) * 2) < 0:
            QMessageBox.about(self, "error", "no money")
            pass
        elif not a:
            tm = int(t) - (int(b) * 2)
            self.tmoney.setText(str(tm))
            self.number.setText(str(a))
        else:
            if a > 0 and 13 > a and int(c) == 1:
                tm = int(t) - (int(b) * 2)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
            elif a > 12 and 25 > a and int(c) == 2:
                tm = int(t) - (int(b) * 2)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
            elif a > 24 and int(c) == 3:
                tm = int(t) - (int(b) * 2)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
            else:
                tm = int(t) + int(b)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))

    def btn2_clicked(self):
        self.tmoney.setText('1000')

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()
# 1. pandas 선언
import pandas as pd

# 2. Excel 파일 불러오기
df = pd.read_excel('excel.xlsx')

# 3. excel 의 nill 값을 '' 로 변환
df = df.fillna('')

python pandas 를 활용 하여 엑셀 파일 불러오기, 수정하기, tolist() 활용하기, 엑셀 저장하기

# 1. pandas 선언
import pandas as pd

# 2. Excel 파일 불러오기
df = pd.read_excel('excel.xlsx')

# 3. excel 의 값을 list 로 변환
df_list = df.values.tolist()

# 4. 불러온 excel 의 column 값 가져오기
df_col = list([col for col in df])

# 5. df_list 수정 

# 6. 다시 df 로 변환
df = pd.DataFrame(df_list, columns=df_col)

# 7. Excel 파일로 저장
df_att.to_excel('36_official_language.xlsx', index=False)

 

 

import re

괄호 혹은 특수 문자를 포함하여 사이에 있는 글자 까지 모두 지울 수 있는 방법입니다.

괄호 안의 경우

remove_text = 'asdf(asdf)'

print(re.sub(r'\([^)]*\)', '', remove_text))

출력 결과 : 'asdf'

 

위의 \( \) 값 대신에 다른 특수문자를 사용해서 지워도 됩니다

예) <, > 안의 글자 지우기 

re.sub(r'\<[^)]*\>', '', remove_text)

안녕하세요.

python set 자료형의 첫번째 값 불러오기 위해선

list 로 변환이 필요 합니다. set type 에는 순서가 없기 때문에 첫번째 값을 불러 올 수가 없는데요

아래와 같이 list 형으로 변환 한뒤 불러오면 됩니다.

set_type = {1,2,3}

list_type = list(set_type)

print(list_type[0])

명쾌한 해답은 아니지만 어떤 값이 들어 있는지 확인 할 때 유용한 방법입니다.

감사합니다.

우선 선행 작업이 필요 합니다. 아래 링크로 선행 작업을 완료 합니다.

1. python 설치, telegram bot 설정

  링크 바로가기

2. import 할 것들 install 하기

  pip install json

  pip install schedule

  pip install time

  pip install request


선행 작업이 완료 되었다면 아래와 같이 코딩된 파이썬 파일(telegram.py)을 생성합니다.

비트맥스의(https://www.bitmex.com) API 중 XBTUSD 값을 1분마다 텔레그램으로 보내는 코드 입니다.

(비트맥스가 아닌 다른 거래소도 API 제공하기 때문에 가능합니다. )

API 는 json 으로 보내주기 때문에 json 을 파싱하는 코드도 포함 되어 있습니다.


import urllib.request
import json
import requests
import schedule
import time

# 반복될 작업을 함수로 정의
def scd():
	# API 링크 가져와서 data 변수에 담기
	with urllib.request.urlopen("https://www.bitmex.com/api/v1/trade?symbol=XBTUSD&count=1&reverse=true") as url:
		data = url.read()
	# json 데이터로 j 변수에 담기
	j = json.loads(data)

	# teleurl 변수에 텔레그램 botfather 한테 받은 자신의 API 넣기
	teleurl = "https://api.telegram.org/bot511337000:AAG7gRmT3Ra8FYl22gekgckK_iwVwkJAAAA/sendMessage"
	
	# 로그 찍어보기(지워도 됨)
	print(j[0]["symbol"] + " : " + str(j[0]["price"]))

	# 챗 id 와 symbol : price 값을 텔레그램에 보내기
	params = {'chat_id': '-1001243756825', 'text': j[0]["symbol"] + " : " + str(j[0]["price"])} 
	
	# 텔레그램으로 메시지 전송
	res = requests.get(teleurl, params=params)

# 스케쥴 설정 매분마다 실행
schedule.every().minute.do(scd)

# while 문을 사용하여 스케쥴러 실행
while 1:
	schedule.run_pending()
	time.sleep(60)




작성 완료 하였다면, 해당 파일이 있는 cmd 창을 열어 'python telegram.py' 실행 합니다.






그리고 텔레그램 채널에 메시지가 잘 오는지 확인 합니다.




잘 되시나요?

잘 안되신다면 댓글 달아주세요~~ 감사합니다.

# 파이썬 # python # telegram # 텔레그램



Python 을 사용하여 Telegram Message 를 보내려면 몇 가지의 선행 작업이 필요합니다.


1. python 설치

설치는 아래 미디움 블로그에 잘 나와있습니다^^

파이썬 설치방법 링크 바로가기


2. Telegram Bot 먼저 만들어야 합니다.

  2-1) 텔레그램 봇세팅

  2-2) 채널 만들기

  2-3) 테스트 메시지 보내기


3. pip install requests

  import 할 requests 를 해당경로에 install 해 줍니다.





위와 같은 작업이 완료 되셨다면 메시지 보내기 시작 하겠습니다.


아래와 같이 코딩된 파이썬 파일을 하나 생성 합니다. (붙여넣기 하시면 편합니다)

주의) 파이썬 코딩 시 세미콜론(;) 을 쓰지 않고 띄어쓰기(들여쓰기) 로 시작과 종료 시점을 구분 합니다. 아래 코딩 내용은 들여쓰기가 하나도 없으므로 코딩 시 들여쓰기 하시면 안됩니다.

예) msg.py


# requests import 해야 합니다(필수)
import requests
# 실행 로그
print("asdf")
# 2-3) 에서 받아온 값을 아래 bot..../ 까지 수정해 줍니다.
teleurl = "https://api.telegram.org/bot511337000:AAG7gRmT3Ra8FYl22gekgckK_iwVwkJAAAA/sendMessage"
# params 변수에 챗 2-2) 에서 받은 챗 id 와 보낼 메시지를 넣습니다.
params = {'chat_id': '-1001243756825', 'text': 'asdf'} 
# 아래 한줄 추가 하면 끝
res = requests.get(teleurl, params=params)


저장이 되었다면 cmd 창에서 저장된 폴더로 이동하여 아래와 같이 python msg.py 명령을 내립니다.




그리고 해당 채널에 메시지가 잘 도착했는지 확인을 해 봅니다.




메시지가 잘 보내지나요?


이해가 안되는 부분이 있으시다면 댓글로 남겨 주시면 보는대로 안내 도와드리겠습니다.



+ Recent posts