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

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

人気プログラミング10位の三項演算子?を調べてみた! #ぼくの大発見日記

# はじめに

ナイトウ([@engineer_naito](https://twitter.com/engineer_naito))と申します。

Pythonの好きなところ。
1つ挙げろと言われたらぼくは三項演算子と答えるでしょう。

ぼくはPythonの三項演算子の書き方がとても気に入っています。
Python以外の三項演算子の書き方を調べて、Pythonの三項演算子くらい好きな書き方がないか探していきます。

※以下の記事よりランキングを引用させていただきます。

https://prtimes.jp/main/html/rd/p/000000312.000049221.html

:::note warn
今回はいろんなプログラミング言語の三項演算子を調べてまとめることが目的の記事です。
ぼくは言語の優劣についての思想などは持っておりません。
引用している言語ランキングについても特に感情や思想は持っておりません。
:::

# 三項演算子 とは

三項演算子を使うと、if文else文を1行で書くことができます。
条件演算子と呼ばれることもあるようです。

英語ではterna

元記事を表示

Django(Django Rest framework)学習記録 ~models.py編~

# 初めに
django(Pythonも学び中)を学んでいるので、メモ代わりに学んだことをまとめていきます。
まずはmodels.pyについてまとめていきます。Pythonについても学んでいるので、Pythonの構文など気になったところも取り上げていきます。
まだまだ、情報系自体について学び始めたところなので、間違っているところもありますが、よろしくお願いします。

# models.pyとは
アプリケーションとデータベースを連携させる仕組み。データベースの検索、取得、追加、削除などの操作が可能。

# 実際にコードを見て気になったところを取り上げていく
アカウント登録等のAPIを作成したときに参考にしたコードを使用する。
参考元は[こちら](https://zenn.dev/iccyan/articles/66e0245c854137)。
“`
from django.db import models

class User(models.Model):
user_id = models.CharField(max_length=20, unique=True)
p

元記事を表示

Obsidiainの壁紙を、自分の好きな画像にしたい!

# Obsidanに背景画像を足したい。
皆さんがはメモを取るのにどんなツールを利用していますか?
これまで私は、メモ、リマインダー、カレンダーをそれぞれMacの純正を使ってきました。

しかし、これらを1つのツールにまとめられるということでObsidianを活用しました。

プログラムも書けるし、markdownも使えるし便利です!
使い方の説明は他の方の記事とか見てください

# この記事で出来るようになること
1、Obsidianの編集ページと閲覧ページ、さらに全体に背景画像を設置できる!
これで、無機質な壁紙とはおさらば!

# できないこと
現状、PCでしか壁紙の設置はできません。
既存のプラグイン(https://github.com/samuelsong70/obsidian-dynamic-background)
を活用すれば、PC,モバイル両方に壁紙を設置できます。(私が作成したプラグインではありません)
しかし今回は、CSSを使って自分で壁紙を設置します。
このほうが細かい設定もできるし、プライベートな画像を壁紙にするのにプラグインを使うのは気が引ける人におすすめで

元記事を表示

ChatGPT との会話(偏差値を求めるプログラムについて)

ChatGPT 3.5 と暇つぶしの会話をしてみました。

User
以下のプログラムの性能・品質を評価してください。

“`Python
import numpy as np

def calculate_deviation_scores(scores):
average_score = np.average(scores) # 平均値を計算
standard_deviation = np.std(scores) # 標準偏差を計算
deviation_scores = [] # 偏差値を格納するためのリスト

# 各学生の偏差値を計算
for score in scores:
deviation_score = 50 + 10 * (score – average_score) / standard_deviation
deviation_scores.append(deviation_score)

return deviation_scores

# 模擬データ
scores = [92,

元記事を表示

EOFの意味は?

なぜecs[EOF]がある?

https://allabout.co.jp/gm/gc/471930/

なぜ、「;」を採用している?

元記事を表示

Pythonの基本⑤【dict型のメソッド】

dict型(辞書型)の操作を行うためのメソッドを備忘録的にまとめてみました。

## よく使うメソッド一覧
`keys()`: 辞書のキーのリストを返します。
“`python
my_dict = {‘a’: 1, ‘b’: 2, ‘c’: 3}
keys = my_dict.keys()
print(keys) # Output: dict_keys([‘a’, ‘b’, ‘c’])
“`

`values()`: 辞書の値のリストを返します。
“`python
my_dict = {‘a’: 1, ‘b’: 2, ‘c’: 3}
values = my_dict.values()
print(values) # Output: dict_values([1, 2, 3])
“`

`items()`: 辞書のキーと値のペアをタプルで含むリストを返します。
“`python
my_dict = {‘a’: 1, ‘b’: 2, ‘c’: 3}
items = my_dict.items()
print(items) # Output: dict_items([(‘a’

元記事を表示

Numpy 使うなら,ちゃんと使おう

どうも,人工無脳はやたら長い変数名と,一時変数と,無駄なプログラミングを推してくるみたいですけど。

それに,結果をリストにして返すなんてもってのほか。

numpy を使うなら,ちゃんとベクトル計算をしましょう。

まさか,一文字当たりいくらという請負仕事なんでしょうか。

“`python
import numpy as np

def calculate_deviation_scores(scores):
average_score = np.average(scores) # 平均値を計算
standard_deviation = np.std(scores) # 標準偏差を計算
deviation_scores = [] # 偏差値を格納するためのリスト

# 各学生の偏差値を計算
for score in scores:
deviation_score = 50 + 10 * (score – average_score) / standard_deviation
deviation_score

元記事を表示

General Purpose Assembler ‘axx’

GENERAL PURPOSE ASSEMBLER ‘axx.py’
axx.pyはアセンブラを一般化したジェネラル・パーパス・アセンブラです。
拙作のexpression.pyモジュールを使っています。

https://qiita.com/fygar256/items/982c17dc473107d02027

axx.py 8048.axx [ sample.asm ]のように使います。
axxは第1引数から、アセンブラのパターンデータを読み込み、パターンデータに基づき第2引数のソースファイルをアセンブルします。

第2引数を省略したら、標準入力からソースを入力します。

パターンデータの解説:

ニモニック オペランド エラーパターン オブジェクトリスト

のように並んでいて、ニモニックをスペースにして省略すると直前のニモニックが採用されます。

オペランドとエラーパターンとオブジェクトリストの小文字のアルファベットは変数です。
小文字のアルファベットにオペランドのその位置に当たる数値が変数に代入されます。エラーパターンとオブジェクトリストで変数を参照します。

特殊な

元記事を表示

マイナンバー(個人番号)の検査用数字の確認方法

マイナンバー(個人版号)は、12桁の数字で、下1桁は検査用数字です。
それは、次で定められています。
[総務省令第八十五号](https://www.soumu.go.jp/main_content/000327387.pdf)
PDF の 4,5ページです。

![p01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/063401e5-2129-c526-3174-d7673c7ee3b3.png)

![p02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/982792b6-2d3b-9149-7aa2-1a107a37f6fb.png)

## プログラム Python3

“`py:check_digit.py
#! /usr/bin/python
#
# check_digit.py
#
# Feb/21/2024
import sys
#
sys.stderr.write

元記事を表示

マージソート

https://paiza.jp/works/mondai/sort_efficient/sort_efficient__merge

“`py
# アルゴリズムが正しく実装されていることを確認するために導入するカウンタ変数、ソート処理には関係がないことに注意
# 番兵は番兵(sentinel:センチネル!)は、プログラミングにおいて配列の最後に設置される特別な要素のことを指す。
# この要素は、通常の値と異なる値を持ち、配列の最後尾に置かれることが多い。
#left,rightの数値ってどこで決める?

count = 0

def merge(A, left, mid, right)
“””
部分データ列 A[left] ~ A[mid-1], A[mid] ~ A[right-1] はそれぞれ整列済み
2つの部分データ列をマージし、A[left] ~ A[right-1] を整列済みにする
“””
# 2つの部分データ列のサイズ
nl = mid-left
nr = right-mid

# 部分データ列をコピー
for

元記事を表示

Pythonで合成関数を実装する

## 動機
コードを書いているとよく
“`python
list(filter(map(…)))
“`
みたいな関数が連続したものに出会います。
大抵コードは左上から読んでいくので, こうしたものもlist->filter->mapの順で読みたくなりますが, 実際は逆なので混乱しやすいです。
“`bash
cut hoge.tsv | uniq | sort
“`
こんな感じでシェルスクリプトのように書けたら見やすいかなと思ったりします。
## 実装
“`python
class CompositableFunction:
def __init__(self, function):
self.function = function

def __call__(self, *args, **kwargs): # ()を後ろにつけたときに呼ばれる.
return self.function(*args, **kwargs)

def __or__(self, other): # |演算子

元記事を表示

PaizaスキルチェックDランク頻出文法 Python3編

# PythonでPaizaスキルチェックを260問解いてミスをした文法や調べた文法をまとめます。
## 苦手だった標準出力について取り上げます。
### 区切り文字を変える(sep)
“`python: sep.py
a = 3
b = 5
c = [a, b]
print(*c, sep =’/’)
“`

“`output: sep.py
3 / 5
“`
sepパラメーターを用いると、上記のようにリストの中身をシングルクオテーション”で指定した区切り文字によって区切ることができます。
ちなみにcのまえについている*(アスタリスク)にはリストの1つ1つの要素を取り出す(**アンパック**)するという意味があります。
“`python: list.py
li = [1, 2, 3]
print(li)
“`
“`output: list.py
[1, 2, 3]
“`
ところが、アスタリスクを用いると下記のようになります。
“`python: list*.py
li = [1, 2, 3]
print(*li)
“`
“`output: list*.py
1

元記事を表示

pyPDFを使用した簡易PDF結合ツールを作った

# 概要
タイトルに示す通り,PDFファイルに対して様々な加工を行う機能を備えたPythonの非標準ライブラリ「pyPDF」を用いた簡易的なPDF結合ツールを作った.このツールを用いることで複数のpdfファイルを結合して1つのpdfファイルを生成することができる.
pyPDFにはPDFMargerクラスというクラスがもともと存在しており,結合にはこれが用いられていたようであるが,このクラスは将来的に廃止されてしまうらしい.そのため今回は公式ドキュメントで利用を推奨されているPDFWriterクラスを用いた.
# 前提
– 使用OS: Windows11
– Pythonのバージョン:3.11.8

# 使用するライブラリ
– pyPDF: PDFの様々な加工や読み取りを行う非標準ライブラリ.次の項でインストールする.
– glob: 指定した条件を満たすパスの一覧を取得する機能を備えたライブラリ.標準なのでインストールの必要はない.
– time: sleep関数を使用するためにimportする.こちらも標準

# 準備
以下のコマンドによりpyPDFをpipでダウンロードした.

元記事を表示

Pythonにおける多次元辞書のキーと値の同時生成方法およびキーの存在確認方法

# きっかけ
Pythonの多次元辞書に関する情報があまり見つからず,何か一発でキーと値を生成できたり,キーの存在確認できたりできないものかと考えて適当にコード書いたものです。
再帰を使っているのでメモリにあまり優しくない方法ですけど、参考になれば幸いです。
何かバグ等ありましたらお教えいただけますと大変勉強になります。

# 多次元辞書のキーと値の同時生成方法

### コードと実行例

“`py:code
def createMulDimDict(dic, keys, val):
dic.setdefault(keys[0], {})
if len(keys) == 1:
dic[keys[0]] = val
else:
createMulDimDict(dic[keys[0]], keys[1:], val)

dic = {}
createMulDimDict(dic, [‘food’, ‘meat’] , ‘beaf’)
print(dic)
# {‘food’: {‘meat’: ‘beaf’}}

元記事を表示

Slackbot(Azure Functions×FastAPI)でAzure AI Search(ベクトル検索)をやってみた

### やりたいこと
ファイルに関する質問をSlackメンションに投げると回答を返してくれる。

### どうやるか
事前に対象ファイルをAzure AI Searchに読み込ませておく(ベクトルインデックス化)
Slackから質問がきたら、OpenAIやCosmosDBを連携させながらAI Search検索を行い
その検索結果を基にOpenAIで回答を生成してSlackに返す。

今回のslackbot作成にあたり、こちらを大変参考させて頂きました🙏
誠に有難うございます🙇
https://zenn.dev/microsoft/articles/jp-openai-5v1

### フローイメージ
“`mermaid
sequenceDiagram
participant sl as slack
participant af as Azure Functions
(slackbot)
participant cd as Azure CosmosDB
participant cg as OpenAI(ChatGPT)
participant oa as Op

元記事を表示

シェルソート

https://paiza.jp/works/mondai/sort_efficient/sort_efficient__shell

シェルソートのやり方がよく分からなかったので下記で学習しました。
(ありがとうございます)

https://medium-company.com/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88/

“`py

def insertion_sort(A, n, h):
# アルゴリズムが正しく実装されていることを確認するために導入するカウンタ変数、ソート処理には関係がないことに注意
num_of_move = 0

for i in range(h,n):
# A[i] を、整列済みの A[i-ah], …, A[i-2h], A[i-h] の適切な位置に挿入する
# 実装の都合上、A[i] の値が上書きされてしまうことがあるので、予め A[i] の値をコピーしておく
x = A[i]
# A[i

元記事を表示

expression.py python用式の評価モジュール

pythonで書いた式の評価モジュール
16進整数、10進整数、floatを数として使える。

演算子の優先順位は次の通り
(expression) 括弧で囲った式
-,~,! 負、ビットNOT、論理NOT
*,/ 乗算、除算
+,- 加算、減算
<<,>> 左シフト、右シフト
& ビットAND
| ビットOR
<=,<,>,>=,!=,== 比較演算子
&& 論理AND
|| 論理OR

### 使い方

`import expression`として、インポートし、

元記事を表示

【Python】大きなSQLファイルを複数の小さなSQLファイルに分割する方法

# 概要
ある大きなSQLファイルを複数のSQLファイルに分割したいという必要性が生じたので、Pythonプログラムで実装しました。
分割したいSQLファイルがたくさんあるとプログラムで一括処理した方が早いですよね。

## 前提
前提として、どのSQLファイルも`INSERT INTO…`各SQLステートメントから始まるものとします。
また、分割した際のファイル名は`01_insert.sql`、`02_insert.sql`…といった形で連番のファイル名にして行きます。

# サンプルコード

“`py
import os

def split_sql_file(file_path):
dir_path = os.path.dirname(file_path)

with open(file_path, ‘r’) as f:
lines = f.readlines()

insert_file_counter = 1
insert_file = None

for line in lines:
if

元記事を表示

discord pyで簡単にメッセージリンクを検知して埋め込みが表示されるbotの作り方

今回はメッセージリンクをサーバーに送信するとこんな感じに埋め込み(embed)が送信されるbotを作っていきます。
![スクリーンショット 2024-01-04 124632.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3044030/8e875be8-1e4e-cc12-0ac4-1b85abf7d206.png)
# 具材(用意するもの)
python (ver3.9以上を推奨)
discord py
# 作り方
まずは基本のソースコードを貼り付けます。
~~~python:sample.py
import discord
from discord.ui import Button, View

lass SampleView(discord.ui.View):
def __init__(self, timeout=None):
super().__init__(timeout=timeout)

@bot.event
async def on_message(mess

元記事を表示

wsl上でpyenvを用いた環境構築

# ライブラリ
“`
sudo apt update
sudo apt upgrade -y
“`

↓pyenvの依存ライブラリ

“`
sudo apt install libffi-dev zlib1g zlib1g-dev libsqlite3-dev make gcc

sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
“`

# pyenv

https://github.com/pyenv/pyenv?tab=readme-ov-file#basic-github-checkout

“`
echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bashrc
echo ‘command -v pyenv >

元記事を表示

OTHERカテゴリの最新記事