Python3関連のことを調べてみた2023年04月06日

Python3関連のことを調べてみた2023年04月06日

Python3の辞書のキーから値を返すプログラム

要素番号で辞書のキーと値を取り出す場合、Python3.7以前では辞書の順序がランダムになるため、キー項目を入力し、キーから値を取り出すプログラムを実装しました。
***

***以前の記事***

https://qiita.com/nogizakapython/items/1533ab7947b0958b3989

実装したプログラム

“`Python3
# 辞書のキーから値を取り出すプログラム
# 新規作成 2023/4/5
# 修正 2023/4/6 (要素の番号ではなく要素のキーを入力する方法に変更)

menus={“pork”:”豚肉”,”beaf”:”牛肉”,”chicken”:”鶏肉”,”fish”:”魚肉”}

str = “”

while True:
try:
str1 = input(f”pork,beaf,chicken,fishの4つから1つの単語を選んでください “)
if str1 != “pork” and str1 != “beaf” and str1 != “chicken” and st

元記事を表示

pip freezeで出力されたライブラリをダウンロードするスクリプト

chatGPTさんに書いてもらいました

“`
@echo off
setlocal enabledelayedexpansion

set PACKAGES_FILE=requirements.txt
set PACKAGES_DIR=packages

if not exist %PACKAGES_DIR% mkdir %PACKAGES_DIR%

for /F “usebackq delims==” %%i in (“%PACKAGES_FILE%”) do (
set PACKAGE_NAME=%%i
set FILE_NAME=%PACKAGES_DIR%\!PACKAGE_NAME!.tar.gz
echo Downloading !PACKAGE_NAME!…
pip download –dest %FILE_NAME% !PACKAGE_NAME!
)
“`

PowerShell版
“`
$packagesFile = “requirements.txt”
$packagesDir = “packages”

if (!(Test-Pat

元記事を表示

Python3の辞書の要素を取り出す

**Python3**で辞書の要素を取り出すプログラムを実装しました。

“`python3
# 新規作成 2023/4/5
# 辞書の要素の

menus={“pork”:”豚肉”,”beaf”:”牛肉”,”chicken”:”鶏肉”}

number = 0

while True:
try:
input_num = int(input(f”番号を0から{len(menus)}の間で入力してください “))
if input_num < 0 or input_num >= len(menus):
raise ValueError
else:
number = input_num
break
except:
print(“数字の入力が間違っています”)

# print(list(menus.items())[number])
#
key,value = list(menus.items())[number]
pri

元記事を表示

素数判定アルゴリズムについて

# Pythonにおける素数判定アルゴリズムについて

#### 用語定義
– 自然数:1以上の整数
– 素数:約数が1とその数自身である自然数
– ただし、1は素数でない。
– 合成数:素数でない数

## 素数判定アルゴリズム

素数であることの定義は、約数が1とその数自身である自然数である。アルゴリズムの1つは、ある自然数Zを2からZまで割っていき、Zで割ったとき以外、一度も余りが0にならなければ素数と判定するものである。

以下の2点を踏まえてアルゴリズムを実装した。
– ZをZで割った余りは0であることは明らかなので、2からZ-1でよい。
– 加えて、隣り合う自然数は互いに素であるから、Z-1では余りが0にならない。したがって、Z-2でよい。
“`python:isPrime.py
def isPrime(Z):
if Z < 2: return False else: for i in range(2, Z-1): if Z % i == 0: return F

元記事を表示

NWJCの文抽出(文選択)

『[国語研日本語ウェブコーパス(NWJC)](https://masayu-a.github.io/NWJC/)』を作成する際、コーパスに含める文の選択に採用されていた方法。
『[CC-100](https://data.statmt.org/cc-100/)』とか、フリーで使えるウェブコーパス、うちでやりたいことにはデカすぎたりノイジーなのでフィルタリングに使ってみる。

方法というか、ツールは nwc-toolkit を利用している。
* オリジナル(アーカイブ):
— https://code.google.com/archive/p/nwc-toolkit/
— https://code.google.com/archive/p/nwc-toolkit/downloads
* GitHub(コピー): https://github.com/xen/nwc-toolkit

フィルタリングルールは[ここ](https://github.com/xen/nwc-toolkit/blob/0f15669cf70b767724a11cb73f8e634765fee365/docs

元記事を表示

タスクマネージャーのパフォーマンスをDiscordBotが定期的に教えてくれるPythonのプログラム

# プログラム

“`python:script.py
import discord
import asyncio
import psutil
import GPUtil
import time

client = discord.Client()

#Discord Bot Token
token = “”

#送信先のチャンネルID
channel_id =

async def send_system_status():
await client.wait_until_ready()
channel = client.get_channel(channel_id)
while not client.is_closed():
# CPU使用率を取得
cpu_percent = psutil.cpu_percent(interval=1)

# GPU使用率、GPU温度を取得
gpus = GPUtil.getGPUs()
if len(gpus) > 0:

元記事を表示

Nishika「中古マンション価格予測 2023冬の部」で4位だったのでまとめ

# 1. 概要
今回コンペに参加して4位を収めることができたので、まとめてみました。
本コンペティションのテーマは国内の中古マンションの価格推定です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852567/a996cdd4-8df5-4b25-8f06-55b308701dde.png)

# 目次
1. 概要
2. 最低限の前処理とベースラインモデルの作成(LightGBM)
3. 前処理
3.1 精度が上がらなかった例
3.2 精度が上がった前処理
4. モデル作成
4.1 グリッドサーチ、ランダムサーチ検討
4.2 手動でハイパーパラメータ調節
4.3 Optunaによるハイパーパラメータの最適化
4.4 再度手動でパラメータ調節
5. まとめ

# 1. 概要
### 評価指標は「MAE」
#### MAEの特徴
実際のデータと予測値の差の絶対値の平均
・外れ値の影響を少なくした処理をしたデータに有効

元記事を表示

PizzaGPTが移植したPython3 getch()関数

pythonによるgetch()関数。
一文字キー入力待ちの関数です。

PizzaGPTという人工知能にgetch関数のCからPythonへの移植を頼みました。
テストをしてみたら、完璧でした。

“`getch.py
#!/usr/bin/python3
import sys,tty
import termios

def getch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch

# ここからテスト

while True:
key=getch()
if key==chr(3):
break
print(key,end=”,flush=True)
exit(0)
“`

元記事を表示

身も蓋も無えprint(end=”Hello, world”)

# こんにちは
Pythonを使っていて、`print`関数で改行させたくない場合、
“`python
print(“Hello, world”, end=””)
“`
こうすることで目的を達成できます。これは、文字列の末尾につける`end`引数のデフォルト値が改行であり、それを空文字列で置き換えることによって改行を防げるという仕組みです。

## ちょっと待ってください
ところで、文末の`end`は1文字である必要はなく、文字列を受け取ります。つまり
“`python
print(end=”Hello, world”)
“`
でいいんですね。

## 終わりに
print(end=”身も蓋も無え!\n”)

元記事を表示

gitlab project user整理

# gitlab project user権限管理表を作る
# 希望:gitlab project user権限管理表
日系projectの要求;目の前のプロジェクトがユーザー管理表が作る,自分が統計で時間がかかります、ちょっとpythonを利用して

“`python
import json
import requests
import csv

#gitlab person access token
TOKEN = “”
GITLABURL = “https://gitlab.com”
##gitlab project ID
PROJECTID = “”
getallmemberApi = “api/v4/projects/{}/members/all”.format(PROJECTID)

def GiveRequestInfo():
headers = {“PRIVATE-TOKEN”:TOKEN}
url = “{}/{}”.format(GITLABURL,getallmemberApi)
content = requests.get(url,

元記事を表示

2次元配列をリスト内包表記を使って作成する方法

2次元配列を作成する方法はいくつか方法がありますが、
今回はリスト内包表記を使って作成する方法について説明します。

結果だけを知りたい方向けに先に結論を書くと、
初期値が「0」で、「4 × 3」の2次元配列「twoD_list」をリスト内包表記で作成するには、
`twoD_list = [[0 for j in range(4)] for i in range(3)]`とします。

以下の説明では、
まず最も基本的な、for文を入れ子にして2次元配列を作成する方法を説明し、
次にリスト内包表記を使った2次元配列作成について説明します。

1. for文を入れ子にして作成する
1. リスト内包表記を使って作成する

 

**1.for文を入れ子にして作成する**
基本的なfor文の入れ子のみを使って作成します。
コードは以下のように記述します。

“`Python
# for文の外側は3回実行
for i in range(3):
# 2次元listの内側に作るlistを宣言
sub_list = []

# for文の内側は4回実行
for j i

元記事を表示

小学生でも簡単!Python入門ガイド:インストール方法、サンプルプログラム、無料学習リソースまとめ

# はじめに

こんにちは、今回はWindowsでAnacondaとSpyderを使ってPythonの実行環境を構築する方法をわかりやすく説明するよ!この記事は簡単に理解できるように書かれています。それでは始めましょう!

# AnacondaとSpyderのインストール方法

以下に、AnacondaとSpyderを使ってPythonの実行環境を構築する方法を説明します。

## A) Anacondaのインストール手順

1. [Anacondaの公式サイト](https://www.anaconda.com/products/distribution)にアクセスします。
2. 「Download」をクリックします。
4. ダウンロードが完了したら、インストーラーを起動します。
5. 「Next」をクリックし、利用規約に同意します。
6. インストール先を選択し、「Next」をクリックします。
7. インストールオプションを選択し、「Install」をクリックします。
8. インストールが完了したら、「Next」をクリックします。
9. インストールが完了しましたの画面が表示された

元記事を表示

module ‘pandas’ has no attribute ‘TimeGrouper’というエラーの原因を調べてみた。

## 今回の疑問
とある書籍で勉強している際、“`pd.TimeGrouper()“`というものが出てきたが実行してみるとエラーに。
なので調べてみました。
“`Python
import pandas as pd

tg = pd.TimeGrouper(“10min”)
#AttributeError: module ‘pandas’ has no attribute ‘TimeGrouper’
“`
## 調べたこと
まずはエラーコードを調べてみます。
AttributeError: module ‘pandas’ has no attribute ‘TimeGrouper’
こちらの意味は「pandasにそんなもんねぇ(意訳)」だそうです。

次に公式さんを覗きます。が、TimeGrouperで調べてみてもGrouperばかりが検索に引っ掛かります。
https://pandas.pydata.org/docs/reference/api/pandas.Grouper.html

そこで以下の記事?質問掲示板?みたいなのを見つけました。
https://stac

元記事を表示

Python3: ChatGPT Speech to text の使い方

参考ページ
[Speech to text ](https://platform.openai.com/docs/guides/speech-to-text)

## 音源
LibriVox に収録されている新見南吉の「ラッパ」を使います。

ダウンロード

“`bash
wget https://ia800200.us.archive.org/21/items/yonen_dowa1_um_librivox/yonendowa1_08_rappa_niimi.mp3
“`

音源の元になったテキスト
[ラツパ](https://www.aozora.gr.jp/cards/000121/files/43409_16108.html)

## プログラム

“`py:to_text.py
#! /usr/bin/python
#
import openai
from dotenv import load_dotenv
import os
import sys

file_audio = sys.argv[1]
sys.stderr.write(file_audio + “\n”)

元記事を表示

for 文での range() 関数の使い方

for 文を使うときによく一緒に使う
`range()`関数の使い方について、以下の3パターンに分けて説明します。

1. 引数が1つの場合
1. 引数が2つの場合
1. 引数が3つの場合

 

**1. 引数が1つの場合**
引数が1つの場合、引数で指定された回数繰り返しを行う。

内部処理としては以下の条件で繰り返している。
・初期値「0」から
・指定された値より小さい値の間
・「1」ずつ増加させながら

具体的なコードを使って説明します。

“`Python
# range()関数で引数が1つ指定された
for i in range(3):
print(“i=”, i)
“`
これを実行すると、以下の実行結果になる。
“`python
i= 0
i= 1
i= 2
“`
改めて見ると、以下の条件で繰り返しています。
・初期値「0」から
・指定された「3」より小さい値の間
・「1」ずつ増加させながら

 

**2. 引数が2つの場合**
引数が2つの場合、
・第一引数で指定された初期値から、
・第二引数で指定された値より小さい値の間、
・1ずつ増やしながら繰

元記事を表示

良いコード/悪いコードで学ぶ設計入門 の急所をpythonで解釈

# はじめに
この記事ではpythonをメイン言語とする筆者が、Javaで書かれた設計の名著 「[良いコード/悪いコードで学ぶ設計入門](https://www.amazon.co.jp/%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89-%E6%82%AA%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%AD%E8%A8%88%E5%85%A5%E9%96%80-%E2%80%95%E4%BF%9D%E5%AE%88%E3%81%97%E3%82%84%E3%81%99%E3%81%84-%E6%88%90%E9%95%B7%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9-%E4%BB%99%E5%A1%B2/dp/4297127830)」を読んで躓いた急所について、pythonの文脈で解釈を試みます。
同じ

元記事を表示

文字列の置換を行う方法

文字列の置換を行う場合には、
文字列`str`の`replace()`メソッドを利用する。

まずは基本的な使い方から説明します。
`replace(‘【置換前文字列】’, ‘【置換後文字列】’)`で、
「置換前文字列」を「置換後文字列」に置き換えることができます。

具体的なソースを元に説明します。
“`Python
# 文字列の定義
example_str = “aaa bbb ccc”

# 文字列を置換して表示
print(example_str.replace(‘aaa’, ‘ddd’))

# 元の文字列を表示
print(example_str)
“`
これを実行すると、
1つ目の`print`行では「example_str」内の「aaa」という文字列が「ddd」に置換され、
`ddd bbb ccc`と表示されます。

なお、元の文字列自体が置換されて変更されるわけではないので、
2つ目の`print`行では`aaa bbb ccc`と表示されます。

 
続いて置換回数を指定する使い方について説明します。
`replace(‘【置換前文字列】’, ‘【置換後文字

元記事を表示

alias設定を使い、Python コマンドで Python 3 が実行されるようにする

Macのターミナルのpythonコマンドをpython3にalias設定して、pythonと入力するとPython3が実行されるようにする。

# 一時的なaliasを作成したい場合
aliasコマンドを実行すると、現在のセッションでのみ有効なaliasが作成される。

“`zsh
alias python=’python3′
“`

# 永続的なaliasを作成したい場合。
## 1. ~/.zshrcファイルにaliasを追加する
aliasを永続的に保存するには、設定ファイルに追加する必要がある。
“`zsh
echo “alias python=’python3′” >> ~/.zshrc

“`
このコマンドは、設定ファイル(.zshrc)の末尾に新しいaliasを追加する。

## 2. 設定ファイルを更新するために、sourceコマンドを使用して、変更を再読み込みする
“`zsh
source ~/.zshrc
“`
この方法で新しいエイリアスがすぐに適用される。
ターミナルを閉じて開き直しても新しいエイリアスが適用されている。

## <補足>
ターミナル

元記事を表示

Python3: ChatGPT API の使い方

こちらのページを参考にしました。
[遂に公開されたChatGPT APIとは? 利用するまでの流れ【ハンズオンで徹底解説】](https://saasis.jp/2023/03/06/%E9%81%82%E3%81%AB%E5%85%AC%E9%96%8B%E3%81%95%E3%82%8C%E3%81%9Fchatgpt-api%E3%81%A8%E3%81%AF%EF%BC%9F-%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%81%BE%E3%81%A7%E3%81%AE%E6%B5%81%E3%82%8C%E3%80%90/)

## プログラム

“`py:fujisan.py
#! /usr/bin/python
#
# fujisan.py
#
# Apr/02/2023
#
# ——————————————————————–
from dotenv import load_dotenv
import openai
import os
im

元記事を表示

tkinterで簡易シリアル通信アプリ

# つくったもの
Aruduinoと通信してる様子(Arduinoは送信データをそっくりそのまま返すだけ)
![スクリーンショット 2023-04-02 12.37.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2839352/7d9f6a5e-1456-1316-fea1-8763224c78c4.png)

– シリアルポートの接続切断
– ボーレート、デリミタ設定
– 文字列の送受信

という機能だけのシンプルなアプリです。

# 準備
pythonで簡単にGUIアプリを作成できるTkinterと、
シリアル通信を可能にするpyserialをインストールします。
~~~python:
$ pip3 install python3-tk
$ pip3 install pyserial
~~~

# コードと解説
~~~python:
import tkinter as tk
import tkinter.messagebox as messagebox
import seria

元記事を表示

OTHERカテゴリの最新記事