python 실행 시 ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets'

위와 같이 에러 메시지가 나온다면

pip3 install PyQtWebEngine 혹은 pip install PyQtWebEnginePyQtWebEngine 을 install 해주시면 됩니다.

안되시면 답글 부탁 드려요

먼저 남자 둘이 다녀 오기엔 저렴하고 위치도 괜찮아서 좋았어요

그렇지만 다음에 사이판에 또 간다면 피에스타 리조트로 가보고 싶습니다!

# 장점
1. 저렴하다
2. 99센트마트를 비롯해 가라판 중심가가 비교적 가깝다
3. 한인게스트 하우스라 편하다(의사소통)
4. 픽업 및 드랍 서비스 이용 가능하다(각 인당 10$)

# 단점
1. 바다랑 멀어서 놀거나 씻기 불편하다 (액티비티 하시려면 비치타올 가져오세요)
2. 부대 시설이 없다
3. 가라판 시내에서 의외로 멀다 (집들어 오면 나가기 싫어짐)
4. 좋은 리조트에 묵고 싶어짐

 

사이판 하루게스트 하우스 실내
사이판 하루게스트하우스 화장실
사이판 하루게스트하우스 복도

$ vi /home/user/.ssh/config

Host test
  HostName IP:PORT
  User UserId

$ ssh test // 로 접속 하면 된다.

command 창을 띄우신 다음 (windows key + r => cmd)

python -m site --user-site

를 입력 하시면 아래 이미지 처럼 경로를 찾을 수 있습니다.

시드 머니를 1000불로 계획하고 룰렛을 마틴(게일)베팅법으로 베팅 했을 때 ,

초기 베팅 금액 별 이길 확률과 평균 베팅 횟수를 python 으로 구현 해 보았습니다.

(룰렛에 0은 포함 00은 미포함)

결론은 1000불을 가지고 룰렛 number, color 베팅을 할 경우

7불, 15불을 초기 배팅금으로 잡고 시작 하는게 가장 승률이 높았습니다.

베팅 횟 수까지 고려 한다면 15불로 시작 하는게 가장 이상적인 것 같습니다(저의 의견).

!!! 절대 베팅을 권고하는 글은 아닙니다. 심심풀이로 만들어 보았을 뿐입니다

base_bet_money: $, win_rate: 승률, betting_count: 베팅 횟수

!! 제가 코드를 잘 못 짰을 수도 있어서 코드도 마지막에 첨부 하였습니다.

for bet_origin in tqdm_notebook(range(1,51)):
    idx = 0
    win = 0
    lose = 0
    total = 0
    
    while True:
        money = 1000
        bet = bet_origin
        i = 0
        hole = 0
        zzac = 0
        while True:
            a = random.randint(0,36)

            if a == 0:
                money -= bet
                bet = bet*2
            elif a%2 == 0:
                money += bet
                bet = bet_origin
                zzac += 1
            else:
                money -= bet
                bet = bet*2
                hole += 1

            i += 1
            if money <= bet:
                lose += 1
                break

            if money >= 1100:
                total += i
                win += 1
                break

        idx += 1

        if idx >= 100000:
            break

    print(bet_origin, win/1000, total/100000)

 

아래 소스를 복사 하여

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()

regex[정규식 표현] 을 사용 할때

공백을 \s 로 표시 하면 공백이 없을 경우 반환하는 값 자체가 나오지 않습니다

이럴 땐 

\s 대신 [- ]? 값을 넣어서 있거나 없을 때 둘 다 값을 반환하게 만들어 보세요!

끝!

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

제가 카지노 가서 자주 배팅하는 방법을 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_()

+ Recent posts