Python関連のことを調べてみた2022年11月19日

Python関連のことを調べてみた2022年11月19日

ろうとるがPythonを扱う、、(その4:まとも版コマンドプロンプトもどき)

# Windowsコマンドプロンプトもどきプログラム(まとも版)
[前回(その3)](https://qiita.com/infinite1oop/items/96a153037bd7b6edf093)で予告した、Text Widgetのみでコマンドプロンプトもどきを実現(より近づく)できたので、その記録をここに記す。

## 作成したもの
![最初.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/da228482-8364-4913-3f6d-f65629a04a93.png)
ここでは、「> 」がプロンプトである。
![結果1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/f9d0eecb-9e9e-b8be-f997-e563d23e251d.png)
![結果2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

初稿

初投稿です。
これからPythonやC++についてアウトプットしていきたいと思います。
まずは手始めに挨拶を。

“`python:qiita.py
print(“Hello World.”)
“`

“`c++:qiita.cpp
#include

using namespace std;

int main(int argc, char** argv) {
cout << "Hello World." << endl; return 0; } ``` よろしくお願いします。

元記事を表示

Githubのスターでランキングを作ってみる in python

Qiita初投稿。頑張って書きます。

最近GitHubのAPIを使ってスクレイピングアプリ的なものを作りました。
題して「Github Star Rank」

https://app-rank-git1.herokuapp.com/
pythonとflaskを使用してます。

スターの数を取得して人気のリポジトリTop5を表示します。

どうやってAPIを叩いたかを自分用に記録していきます。

1、APIの取得

これがまず最初の難関。GitHub APIのページでスター関連(starring)のAPIを探したが、どれもランキングに使えそうな物が無い。例えばどのユーザーがどのリポジトリにスターを押したかとか、このリポジトリーには誰がスターを押したか、とかはAPIで叩ける。でもGitHub全体でどのリポジトリーがスター数を獲得したかは網羅してないようだ。

しかし色々調べていくと解決の鍵はsearchカテゴリーにあるんじゃないかと思えてきた。ドキュメントでも”Search API を使うと、GitHub で特定のアイテムを検索できます”と記されてる。盲点だった。

でもどうやって

元記事を表示

python tupleの要素は変更でき(る|ない)?

### よく見る文
python tupleの要素は変更できない — (1)

変更をしようとすると確かに、エラーが出ます。
“`python
>>> a = (1, 2, 3)
>>> a[0] = 10
Traceback (most recent call last):
File ““, line 1, in
TypeError: ‘tuple’ object does not support item assignment
“`

Webで調べると、**tupleは要素の変更ができない**とさんざん言われていますので、私は催眠術にかかってしまったのですが、ある時目が覚めました。以下の実験例を見てください。
“`python
>>> a = (1, [2, 3], ‘4’, {5: 6}) # — (2)
>>> a[1].append(4)
>>> a
(1, [2, 3, 4], ‘4’, {5: 6}) # — (3)
>>> a[-1][7] = 8
>>> a
(1, [2, 3, 4], ‘4’, {5: 6,

元記事を表示

【Python】昔C言語で作ったゲームをPythonでリファクタリングしてみた

# この記事について

特に初心者にとってためになる記事ではないと思います。
ただ今後のために記録に残したいがために記事にしました。
読む価値がありそうなのはゲームがしたい人、初心者のコードのレビューをしたい人とかでしょうか。

# ?始めに

昔自分で作ったゲームをPythonで書き直し、同時にリファクタリングもしてみましたー!!

?そのゲーム

https://qiita.com/scythercas/items/77d213b9f6ead9954dd6

あげた直後に[コメント](https://qiita.com/scythercas/items/77d213b9f6ead9954dd6#comment-9fde105241cf0dc75c86)にて @shiracamus さんが凄く綺麗に書き直してくださりました。

ここで初めて関数分割という概念を知り、見やすさとコードの簡潔さに感動した覚えがあります。

今回は成長出来ているか確かめるため参考にせずにやってみました(もちろん当時はめちゃくちゃ見ました)。

# ?ルール説明

丁寧に説明してるつもりですが、プレイしてい

元記事を表示

Pythonのプログラムをseedを変えながら何回も実行したい

# 0. はじめに
卒論などで実装はできるようになった!あとは何回も実験をしよう!ってなると、Pythonのプログラムをseedを変えながら勝手に何回も繰り返し実行して、その結果を記録してくれたらな、、と思います。
そんなときに、シェルスクリプトを書いて実現してみようというお話です。

(他にも方法はいろいろありますが、個人的にはこれが1番楽な気がしました。が、初学者なので間違っているところやもっとこうするといいぞっていうのがぜひ教えてください、、)

“`
実行環境
linux, python3.10.6
“`

# 1. 実行したいプログラムに準備をする

まずは、実行したいプログラムに少し準備をします。
今回は実験結果の配列(下のコードだとhistory)はnumpyを使って.npyファイルに保存したいと思います。
なお、正しく実行できているか確認するためにもtime.time()を使って実行時間を結果の配列に含めておくと便利だと思います。

“`Python:sample.py
import numpy as np

#########自分の実行したいコード##

元記事を表示

【Python】位置情報解析ライブラリscikit-mobilityについて② ~前処理編・前編~

# 1. scikit-mobilityとは?
scikit-mobilityは位置情報データを使用して人の動きを解析したり、可視化することができるpythonライブラリです。

公式ドキュメント:https://scikit-mobility.github.io/scikit-mobility/index.html
GitHub:https://github.com/scikit-mobility/scikit-mobility
公式ドキュメントは英語しかありませんが結構充実していて、
GitHubにはチュートリアル等も載っているので試してみるのがおすすめです。

scikit-mobilityの主な機能と、チュートリアルについて解説しているQiitaもありますのでこちらも是非参考にしてください。
* [【Python】位置情報解析ライブラリscikit-mobilityについて① ~scikit-mobilityとは?~](https://qiita.com/Nightley_dev/items/02b8fbad2db8236a92d1)

# 2. 今回紹介する関数について
##

元記事を表示

【Python】挿入ソートを盛大に勘違いしてしまった件

# 経緯

並べ替えアルゴリズムのうち、**挿入ソート**なるものを見つけ実装しようと思った矢先こんな記事に出会った。
(調べると結構上に出てくる)

https://medium-company.com/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88/

> * 挿入ソート(基本挿入法)とは**未整列の配列**から1つずつ値を取り出し**整列済み配列**の適切な位置へ挿入していく手法です。
> * 「6」は「7」より小さくて「5」より大きいので、「5」と「7」の間に挿入

なるほど、**新しく配列を用意**して、要素を挿入するときは**自分で適切な場所を探して挿入**するんだな、って解釈した。

ところが、、挿入ソートが**自分の実装と異なるものばかり**であることが発覚した。

> [バケットソート](https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E3%82%BD%E3%83%BC%E3%83%88)でバケツ内の並び替えをするときに、どのアルゴリズムを

元記事を表示

【おひるーれっと】#00 今日のお昼ごはんを決めてくれるアプリを作りました

## はじめに
同期とランチに行くとき、いつも何を食べるか迷ってしまいます。

> 「何でもいいよ」
> 「美味しいもの食べたい」
> 「食べられるものならOK」

毎日のこんな会話をやめるべく、優柔不断なぼくたちの意思決定 ~~(ごはん選び)~~ をサポートするアプリを作りました。これで意思決定にかかる時間を最小化して休憩時間を確保し、「時間価値を最大化する」ことができますね!

## つくったもの
今回作ったのは、お昼ごはんを決めるためのWebアプリケーションです。
制作物は[ここ](https://ohiroulette.vercel.app/)からアクセスできます。[GitHubはこちら](https://github.com/yuji-0207/ohiroulette)からどうぞ。

レスポンシブ対応してないので**スマホからアクセス**してください。
あとデザインださいです。

DjangoのManagerとQuerySet、どっちがいいの問題

# 今回の問題
ManagerメソッドとQuerySetからas_managerでManagerとして利用すること、どっちが適切なのか?
というのが不安だったので、自分用にメモ。
# 問題の背景
あんまりManagerとQuerySetの違いから理解できていない。
# Modelとは
そもそもModelとは何かまで遡る。
Djangoの公式ドキュメントによると
> モデルは、データに関する唯一かつ決定的な情報源です。あなたが保持するデータが必要とするフィールドとその動作を定義します。一般的に、各モデルは単一のデータベースのテーブルに対応付けられます。
>基本:
> * モデルは各々 Python のクラスであり django.db.models.Model のサブクラスです。
> * モデルの属性はそれぞれがデータベースのフィールドを表します。
> * これら全てを用いて、Django はデータベースにアクセスする自動生成された API を提供します。

つまり、Modelとはデータベースのテーブルを定義するもの。
役割としてはデータとPythonオブジェクトを定義するFields

元記事を表示

「この猫なに猫?」APIをPythonでたたいてみた!

# はじめに
今回は[こちら](https://metadata.co.jp/apis/what-cat/detail.html)の「この猫なに猫?」APIをPythonからたたいてみます。

# 開発環境
+ MacBook Pro (13-inch, 2018)
+ macOS Monterey 12.3.1
+ Visual Studio Code 1.73.1
+ Python 3.9

# それでは実際にたたいてみます

### 仕様書
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2976188/17e545c5-6e06-3c23-c5df-4dcf7a0ed106.png)

このURLに識別したい画像をPOSTすると結果がJSON形式で返ってきます。

### 実行するには
「この猫なに猫?」APIを利用するにあたって、ユーザー登録が必要です。

「ユーザー名」「メールアドレス」「パスワード」を入れて**singup**をクリックし、届いたメールから認証すれば登録完

元記事を表示

PythonでCSVファイルを1つのExcelファイルにまとめる(pandas対xlwings)

# はじめに
計測のたびに出力される複数の計測結果のCSVファイルを、とりあえずExcelのブックにまとめたい気持ちになりました。パッとできないかなとおもったけど、pandasかxlwingsかどっちでやればいいのか悩んだので記録用にメモ。

# 前提

CSVファイルのサイズは以下の通り。
(30730, 7),4375KB
(84240, 6),8739KB
(41550, 9),6245KB
Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz 2.71 GHz

# pandasのExcelWriterを使う方法

ExcelWriterを使って複数シートに記録してみる
“`python
filelist=[“output.csv”,”output1.csv”,”output2.csv”]
filepath=[pathlib.Path(f) for f in filelist]

with pd.ExcelWriter(‘output.xlsx’) as writer:
for f in filepath:
print

元記事を表示

Kaggle : MSCIコンペ復習①【CV】

MSCIコンペが終わったので、復習していく。
まずは今回のコンペで最も重要である要素の一つである「どのようにして最終サブミットのためのモデルを作成するか」を考えていこうと思う。

https://www.kaggle.com/competitions/open-problems-multimodal/overview

# CV と Public LB と Private LB
今回のコンペでは、CVでのデータの分布とLBでのデータの分布が異なっていた。CITE に限定して考えていく。
– TrainデータはDay2,3,4 (Donor1-3)の細胞群 (図では赤色)
– Public LBデータはDay2,3,4 (Donor4)の細胞群 (図では水色)
– Private LBデータはDay7 (Donor1-4)の細胞群 (図では緑色)

このように、Public LBにはTrainにはない**未知のDonor**の情報が、Private LBには**未知のDay・未知のDonor**の情報が含まれていた。そのため、Public LBでは未知のDonorをうまく予測できるモデル

元記事を表示

Pythonでエニグマシミュレータを作成

# はじめに
Qiita 初投稿です。

映画「[イミテーション・ゲーム/エニグマと天才数学者の秘密](http://imitationgame.gaga.ne.jp/)」で、エニグマが登場し興味があったので、Pythonで実行しました。

githubにてライブラリを公開しました。

https://github.com/kazumamatsu/enigma_sim

# 目次
# エニグマの仕組みについて
参考記事
– エニグマとは:[Wikipedia-エニグマ (暗号機)](https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%8B%E3%82%B0%E3%83%9E_(%E6%9A%97%E5%8F%B7%E6%A9%9F))
– エニグマの仕組み:[たった1枚の紙でナチス・ドイツの傑作暗号機エニグマを再現できる「Paper Enigma Machine」を使ってみた](https://gigazine.net/news/20201123-paper-enigma/)

# 使用方法
pipにてライブラリをインポート
“`
pip i

元記事を表示

Python 入門 第1章 Pythonとは

## 1.1 概要
Pythonは、1991年にイギリス出身のプログラマー **グイド・ヴァンロッサム**(Guido van Rossum、1956年1月31日 – )によって開発されたオープンソースのプログラミング言語である。
バージョンが上がるに連れさまざまな機能が追加され、2022年11月現在 Pythonの最新のバージョンは**3.11.0**である。

C,C++やJavaは**動的型付け言語**であり、コンピュータのデータ型のような低水準の詳細を指定しなければない。
それに対し、Pythonなど**動的型付け言語**は、使う前に変数の型の宣言の強制はしてこない。

## 1.2 特徴
– 構文がシンプルで読みやすい
– 標準ライブラリが他の言語に比べて多い

## 1.3 The Zen of Python
どのプログラミング言語でもそれぞれスタイルがあり、以下のコードを入力を入力すると、Pythonの「まえがき」みたいな詩を読むことができる。時間があれば読んでおくと面白い。

“`
>>> import this

The Zen of Python, by Tim

元記事を表示

Databricks ( Spark ) にて前方一致したデータベース(スキーマ)を削除する方法

## 概要

Databricks ( Spark ) にて前方一致したデータベース(スキーマ)を削除する方法を共有します。

## 実践例

### 1. 削除対象のデータベースを作成

“`python
%sql
create database _test_1;
create database _test_2;
create database _test_3;
create database _test_4;
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d696f518-65b8-a50f-42ad-ba692b41a607.png)

### 1. 前方一致したデータベース(例:`_test`ではじまるデータベース)を DROP

“`python
db_prefix = ‘_test’

dbs = spark.sql(f”SHOW DATABASES ‘{db_prefix}*'”).select(‘databaseName’).collect(

元記事を表示

numpy の 型昇格(type promotion) がやばい話

結論: numpy ではちゃんとオーバーフローのめんどうを見ましょう

* `np.__version__ == ‘1.23.4’`
* 表は index * column の計算結果
* スカラーと `ndarray` で挙動が違う
* オーバーフローしたときの `RuntimeWarning` はスカラー同士の時にしか出ない
* [numpy.result_type](https://numpy.org/doc/stable/reference/generated/numpy.result_type.html) の結果が計算結果の `dtype` 、足し算と掛け算で同じ型を使っているため最悪死ぬ

| = i * j | 255 | np.uint8(255) | np.uint8([255]) | 257 | np.uint16(257) | np.u

元記事を表示

Python用語集

## オブジェクト指向
何かしらを作る時に、一気に作るのではなく、要素要素に分解してその要素を繋ぎ合わせて作る考え方の事

## 動的な
流動的に変化する

## 静的な
変わらない

## インタープリンタ方式
プログラミング言語の命令を一つずつ機械語に解釈しながら実行する方法
作成したソースコードをすぐに実行できるメリットがあるが、毎回解釈するため実行時間が長くなる

## バイナリ形式
データが、0と1で表現されているデータ形式のこと

## PyPy
動作を早くする時に使用されるインタプリンタ

## CPython
標準で使えるインタプリンタ

## 文字列リテラル
0以上の連続した文字列

## 組込み関数
初めから用意されている標準で使用可能な関数のこと

## シーケンス型
複数の要素をまとめて扱える型
例 : リスト、タプル、文字列など

## メソッド
class内で使用する関数 別名 : メンバ関数

## フォーマット済み文字列リテラル f-string
接頭辞 ‘f’ または ‘F’ の付いた文字列リテラル。これらの文字列には、波括弧 {} で区切られた式であ

元記事を表示

ディレクトリ内にある画像をリサイズするPythonコードを公開するよ!!

ディレクトリ内にある画像をリサイズしたいとき、いつも同じようなコードを作り直している気がするので、メモがてらQiitaに投稿しようと思う。

## 必要なもの

– Python 3.10
– OpenCV for python (opencv-pythonでインストールすると楽)

## 使い方

下記のどちらかのコマンドを実行するだけ!
srcdirにある画像をリサイズしてdstdirに出力します。

“`bash
# サイズを指定してリサイズ (サイズは`{width}x{height}`で指定する)
$ python3 image_resizer.py /path/to/srcdir /path/to/dstdir -s 320×240
# 割合でリサイズ
$ python3 image_resizer.py /path/to/srcdir /path/to/dstdir -r 0.5
“`

## ソースコード

“`python
import cv2
import argparse
import os
import sys
import numpy as np
fro

元記事を表示

pandasデータフレームの列にある例外表現を、正規表現で分割する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982344/8e522806-dc55-31d1-3e16-2c3a5913e66f.png)

このようなデータフレームの artist_namesの中にある文字列から、曲名とそれ以外に分割して、適切な列に格納したい。

“`python
# 例外の行を正規表現で分割しておく

#まず列の中のデータを正しい列にコピーして、元の列のデータを削除する。
df_tmp[‘song_title’] = df_tmp[‘artist_names’]
df_tmp[‘artist_names’] = “”

# (English Translation) もしくはその類似表現で分割する
df_tmp2 = pd.concat([df_tmp[‘index’], df_tmp[‘page_views’], df_tmp[‘artist_names’], df_tmp[‘song_title’].str.split(r’\(.+?nglish Tra

元記事を表示

OTHERカテゴリの最新記事