Python3関連のことを調べてみた

Python3関連のことを調べてみた

Pythonでサイコロ転がしゲームを作ってみた

### 前置き
今日は、6月21日だ。そこで、サイコロのことをぱっと思い浮かんだ。
サイコロの目は、6つあり、目の総和が21である。
そのような理由で、パソコンとサイコロを転がすゲームが作りたくなった。

### プログラムコード
“`python
import random

def get_user_choice():
while True:
try:
user_choice = int(input(“1から6の数字を選んで、入力してください: “))
if user_choice not in range(1, 7):
print(“無効な入力です。サイコロの目(1から6)を入力してください。”)
else:
return user_choice
except ValueError:
print(“無効な入力です。数字を入力してください。”)
“`
### 出力結果
“`

`

元記事を表示

Windows PythonとBLEAKを使ってESP32とBLE通信してみました

以前作ったESP32のBLE通信ソフトですが僕にとっては必要十分だったみたいで、
気が付けば2024年の今でも同じソースコードで使っています。
そこで以前WindowsC#で挫折したBLE接続ですが最近PythonのBLEAKで使える様に
なったそうなので挑戦してみる事にしました。

#実行に必要なリソース
  ESP32とArduinoIDE開発環境(以前作った奴です)
  Windows機とPython開発環境(Bleakをインストールしてください

#機能
  ESP32とSerial通信ぽい事をします(サンプルプログラムミみたいな感じです

#使い方
  ESP32側もコンパイルして動作させておきます
 Windows機からは「ESP32_BLE_SERVER」に接続して通信を行います。
通信するだけのソフトなので、後はお好きな様にどーぞ

#問題点
  接続・切断テストを行っていますが、全ての条件が網羅できていない様です。
  私はあまりPythonの事をよく判っていません。

“`py:WindowsBLE.py:
import asyncio
impo

元記事を表示

Pythonで決定性チューリングマシンのシミュレーションを行う

## 動機
学校の課題で決定性チューリングマシンの設計があったので, それの答え合わせ用にチューリングマシンのシミュレーションを行うためのPythonコードを書きましたので共有します。
何回か動作は確認しましたが保証はできません。
## コード
“`dtm.py
from typing import List, Dict, Tuple
from enum import Enum

class Transition(Enum):
“””
Enum representing the direction of transition in a Turing Machine.

Attributes:
RIGHT (int): Represents a move to the right on the tape.
LEFT (int): Represents a move to the left on the tape.
“””
RIGHT = 1
LEFT = -1

class State:

元記事を表示

python exe化

# pythonプログラムをexe化する
exe化ツールはいくつかあるが、pyinstallerを利用
Nuitkaはexeファイルが大きくなる傾向
* pyinstaller
* Nuitka

`pyinstaller –clean –onefile –noconsole`

使ってみたけど `–noconsole` だとexeが落ちた時に気付けないので、最近は`–noconsole`は外して実行
pyinstallerもexeファイルはでかい。。。

Edgedriverexeを取り込みたい
–binary “edge.exe;edge.exe”
でうまくいかない

アイコンのオプションもあったな。
–icon=test.ico

アイコンファイルの作り方
https://service.tree-web.net/icon_converter/

元記事を表示

Pythonで現在のプロ野球の順位表を作ってみた

プロ野球も、交流戦が終わり、今週金曜日からリーグ戦が再開しようとしている。
そこで、私はPythonを使って現在のプロ野球の順位表を作成するのに興味を持った。

### プログラムコード
“`
pip install pandas
import pandas as pd

# セントラルリーグのデータ
central_league_data = {
“チーム”: [“広島カープ”, “阪神タイガース”, “読売ジャイアンツ”, “横浜ベイスターズ”, “ヤクルトスワローズ”, “中日ドラゴンズ”],
“勝利数”: [32, 32, 31, 32, 27, 27],
“敗戦数”: [25, 30, 30, 31, 33, 33],
“引き分け数”: [4, 4, 5, 1, 4, 5],
“勝率”: [0.561, 0.516, 0.5081, 0.5079, 0.45, 0.45],
“ゲーム差”: [None, 2.5, 0.5, 0, 3.5, 0]
}

# パシフィックリーグのデータ
pacific_league_data =

元記事を表示

PythonでCoin Toss Gameを作ってみた

今年は、パリオリンピックが開催される。

そこで、私はよくサッカーの試合でエンドを決めるために使われているコイントスをPythonを使い、プログラムコードを書くことについて、興味を持った。

### What is Coin Toss?
硬貨などを投げ上げて、落ちたそれの裏表で物事を決めることである。

### プログラムコード
“`py
import random

def get_user_choice():
while True:
try:
user_choice = int(input(“What do you choose? Type 1 for Heads, 2 for Tails, or 3 to Quit: “))
if user_choice not in [1, 2, 3]:
print(“Invalid input. Please choose 1 for Heads, 2 for Tails, or 3 to Quit.”)
else

元記事を表示

Openpyxl: 背景色の変更

## プログラム

“`py:set_bg_color.py
#! /usr/bin/python
#
# set_bg_color.py
#
# Jun/19/2024
# —————————————————————
import sys
import openpyxl
from openpyxl.styles import PatternFill

# —————————————————————
xlsx_in=sys.argv[1]
xlsx_out=sys.argv[2]
sys.stderr.write(xlsx_in + “\n”)
sys.stderr.write(xlsx_out + “\n”)
wb = openpyxl.load_workbook(xlsx_in)

ws = wb.worksheets[0]
print(“ws.max_row = %d” % ws.max_row)

fi

元記事を表示

Openpyxl: 罫線を引く

罫線を引くプログラムです。

## プログラム

“`py:set_borders.py
#! /usr/bin/python
# —————————————————————
# set_borders.py
#
# Jun/18/2024
#
# —————————————————————
import sys
import openpyxl as xl
from openpyxl.styles.borders import Border, Side

# —————————————————————
xlsx_in=sys.argv[1]
xlsx_out=sys.argv[2]

bk = xl.load_workbook(xlsx_in)
ws = bk.worksheets[0]
print(“ws.max_row =

元記事を表示

ROS2のtf_transformationを使っているモジュールで、’Installing the transforms3d library by hand required. …’ と言われた時

2時間くらいハマったので備忘録を残しておきます。
同じエラーで苦しんでいる人が少しでも減りますように。

# TL; DR
transforms3dのバージョンを0.4.1以前にしてみてください。
もしくは、下記サイトの解決法を試してみてください。

# 概要
本日(2024/6/18)、ROS2のtf_tranformationsを使っているモジュールにて、突然下記エラーが出ました。
“`bash
Installing the transforms3d library by hand required. Please run
sudo pip3 install transforms3d
“`

原因を色々探ってみたところ、[6/17にtransforms3dのバージョンが0.4.2に上がっていたことが判明。](https://pypi.org/project/transforms3d/#history
)

0.4.1に戻してみたところ、無事にエラーを解消できまし

元記事を表示

Pythonで、Fizz Buzz 問題の理論を元に素数を判定してみた

### FizzBuzz問題とは
“FizzBuzz”とは英語圏の有名な言葉遊びです。ルールは1から順に数を数え上げていき、3の倍数なら「Fizz」、5の倍数なら「Buzz」、両方の倍数(15の倍数)なら「Fizz Buzz」、いずれでもなければその数を言うというものです。簡単なプログラミングの練習として、3の倍数のときは「”fizz”」、5の倍数のときは「”buzz”」、共通の倍数(のときは「”fizzbuzz”」、その他は「数値」を戻すという単純な処理を実装します。

この記事においては、1から1000までの範囲で、Fizz Buzz 問題を検証してみたい。
その後、1から100と1から1000までの素数を、FizzBuzz問題のように検証してみたい。

### FizzBuzz 問題応用編プログラムコード
“`
target = 1000
for number in range (1, target + 1):
if number % 3 == 0 and number % 5 == 0:
print (“Fizz Buzz”)
elif number % 3

元記事を表示

Pythonで九九の表を作成してみた

Pythonを使って、九九の表を作ってみました。

## 二重for文

九九になると、 for文を二重で使うのが一般的だ。
コードを書いていきましょう。

“`
for i in range (1,10):
for j in range (1,10):
if j == 9:
print (f”{i} x {j} = {i *j}”)
print ()
elif i*j < 10: print (f"{i} x {j} = {i *j}") else: print (f"{i} x {j} = {i *j}") ``` ### コードの出力結果 ``` 1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 1 x 5 = 5 1 x 6 = 6 1 x 7 = 7 1 x 8 = 8 1 x 9 = 9 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2

元記事を表示

デコレーターについての備忘録

### デコレーターとは
デコレーターは、関数を修飾する関数です。これにより、関数を書き換えることなく、その関数に処理を追加したり、変更したりすることができます。

### デコレーターを使わない例
まず、デコレーターを使わない例を見てみましょう。

“`python
def add(a, b):
print(a + b)

print(‘Start!!’)
add(1, 2)
print(‘Finish!!’)

print(‘Start!!’)
add(3, 4)
print(‘Finish!!’)
“`

このコードでは、`add`関数を呼び出す前後に同じメッセージを表示しています。

### デコレーターの使用例
次に、デコレーターを使って上記の処理を簡略化する例を見てみましょう。

“`python
# デコレーター関数を定義
def my_decorator(func):
def wrapper(a, b):
print(‘Start!!’)
func(a, b)
print(‘Finish!!’)

元記事を表示

クロージャーについての備忘録

### クロージャーとは
クロージャーは、関数の外で宣言された変数や引数を保持する機能のことです。これにより、関数が定義されたスコープの外からも変数にアクセスできます。Pythonでは、すべてがオブジェクトとして扱われるため、変数もオブジェクトです。

### 基本的な関数の例
以下は、円の面積を計算する関数の例です。

“`python
def circle_area(pi, radius): # 関数オブジェクトを作成してcircle_area変数に代入
return pi * radius * radius

area = circle_area # ()がないと、変数に代入されている関数オブジェクトを取り出すだけ
print(area) #

print(area(3.14, 2)) # 12.56
“`

### クロージャーの例
次に、クロージャーを使った関数の例を見てみましょう。

“`python
def circle_area(pi):
def calculation(radius)

元記事を表示

ABC358のEをPythonで解く方法(復習)

[E-Alphabet Tiles](https://atcoder.jp/contests/abc358/tasks/abc358_e)の問題の解法が思いつかず&実装方法も思いつかず悔しかったのでこの記事で復習します。

# 問題文

>> AtCoder Landでは、アルファベットの書かれたタイルが販売されています。高橋君は、タイルを一列に並べてネームプレートを作ろうと考えました。

> 長さ$1$以上$K$以下の英大文字からなる文字列であって、以下の条件を満たすものの個数を998244353で割った余りを求めてください。
> – $1 \leq i \leq 26$ を満たす任意の整数$i$について以下が成立する。
– 辞書順で$i$番目の英大文字を$a_i$とおく。例えば、$a_1 = `A`, a_5 = `E`, a_{26} = `Z`$である。
– 文字列の中に含まれている$a_i$の個数は0以上$C_i$個以下である。

## 失敗したコード

“`python
from collections import deque, defaultdict

元記事を表示

Python講座 – 2024ver.

## 誰がこれを読むべきか
Pythonを学ぼうと思っている、プログラミング初心者
前提 : `$` の後に続くコマンドを実行する場合は、`$`を取り除いて入力してください

:::note info
初版年月日 : 2024年6月15日
更新年月日 : –
使用環境  : macOS (Monterey~)
確認環境  : Python3.8~
(Windowsでも動作に差はないと思いますが、シェルスクリプトの書き方が違うため、お気をつけください)
:::

## 目次
1. [はじめに](#はじめに)
1. [プログラミングとは](#プログラミングとは)
1. [プログラミング言語とは](#プログラミング言語とは)
1. [Pythonとは](#pythonとは)
1. [セットアップ](#セットアップ)
1. [python環境構築](#python環境構築)
1. [pipとは](#pipとは)
1. [python仮想環境とは](#python仮想環境とは)
1. [venvとは](#venvとは)

元記事を表示

requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)というエラー

# はじめに
 前回に引き続き、FastAPIを用いた会議室予約アプリの作成中に出てきたエラー文です。

# 問題
“`
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
“`
上記のエラーに遭遇。
# 原因
API側から受け取ったデータが変である可能性ありとのこと。
https://teratail.com/questions/tm5eg39ug7j7uy

“`
#main.py
@app.get(“/bookings”, response_model=List[schemas.Booking])
async def read_bookings(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
booking = crud.get_bookings(db, skip=skip,

元記事を表示

Pythonの基本概念だけを学習してみた

# はじめに

Python は、そのシンプルさと柔軟性、強力な標準ライブラリによって、多くの開発者に愛用されています。この記事では、Python 独自の概念について学び、そのメリットを探ります。

# 動的型付け

Python は動的型付けの言語であり、変数の型を明示的に宣言する必要がありません。変数に値を代入すると、その変数が参照する値の型が決まります。

“`py
x = 10 # x は整数型
x = “Hello” # x は文字列型に変更
print(x)
“`

このコードでは、変数 x に整数値を代入した後、文字列を代入しています。

## 動的型付けのメリット

1. 柔軟性: 変数の型を変更できるため、柔軟なコーディングが可能。

2. シンプルさ: 型を宣言する必要がないため、コードがシンプルで読みやすい。

3. 迅速なプロトタイピング: 型の宣言に時間をかけずに、迅速にプロトタイプを作成できる。

# インデントによるブロック構造

Python はインデントを使用してコードのブロックを定義します。これにより、コードの可読性が向上し

元記事を表示

Pythonで、10進数→n進数、n進数→10進数に変換してみた

私たちは、一般的に10進数を使っています。これは、10を基数とした表現法です。
0から9の10個の数字を使って数を表現し、10になると、桁が上がります。

ここで、私はPythonを使って、n進数に変換できないか興味を持った。この記事の目的は、10進数をどのようにn進数へ、n進数をどのように10進数に変換するかを説明したい。

### 10進数からn進数への変換方法

“`
x = “10”
#2進数への変換
print (int(x,2))
#6進数への変換
print (int(x,6))
#8進数への変換
print (int(x,8))
#16進数への変換
print (int(x,16))
“`
### 実行結果
“`
2
6
8
16
“`
### n進数から10進数への変換方法
“`
#2進数への変換
print (int(‘10100′,2))
#6進数への変換
print (int(’32’,6))
#8進数への変換
print (int(’24’,8))
#16進数への変換
print (int(’64’,16))
“`
### 実行結果
“`

元記事を表示

[AWS SAM] Selenium4をAWS lambda Python3.12で動かす

# はじめに

AWS SAMを使ってAWS LAMDA上でselenium3を使う方法をご紹介いたしましたが、当初目的が別にありました。

きっかけはこちらの方の記事でした。

selenium4の最新版を利用すれば、新しく追加されたselenium-managerという機能があり、簡易的なChromeブラウザと、そのバージョンにあったChromDriverを自動でインストールしてくれます。

また古いHeadless-Chromiumはselenium4に対応していないため、最新のchromeに対応させたかったのですが、なぜか手元のマシン(M2 Macbookpro)で動かず、手詰まりになっていました。

この記事は動作するようになったコードの紹介と、その解決方法についてのまとめです。

## こんな方におすすめ

* AWS Lambda python3.8以上でselenium4を使いたい方
* AWS SAMを使っている方
* Apple Silicon製のMac(M

元記事を表示

【備忘録】正常系テストと異常系テストの例

# はじめに
お久しぶりです。Tomita Kentaroと申します。今回はプログラミングのテストについて書きたいと思います。特に正常系テストと異常系テストについて簡単にまとめます。今回扱う、ソースコードの全体を以下に示します。

“`python:Test.py
import unittest

def divide(a, b):
return a / b

class TestDivideFunction(unittest.TestCase):
def test_divide_normal(self):
self.assertEqual(divide(10, 2), 5)
self.assertEqual(divide(9, 3), 3)
self.assertEqual(divide(5, 1), 5)

def test_divide_by_zero(self):
with self.assertRaises(ZeroDivisionError):
divide(1

元記事を表示

OTHERカテゴリの最新記事