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

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

【Python】プログラミング問題 文字と整数の組のソート2  を自分なりに解説【paiza】

# はじめに
paizaラーニングはプログラミング学習が出来るプラットフォームです。
問題はランク付けしてあり、ランクが上がると難易度がアップします。
paizaラーニングのレベルアップ問題はユーザー同士で解答を教え合ったり、コードを公開することが可能です。
自分が難しいと感じた問題のコードを解説することでスキルアップをする事が今回の目的でした。

誤りや改善点がありましたらご指摘頂けますと嬉しいです。

# お題 
## お題のリンク
https://paiza.jp/works/mondai/prob60/sort_add_9

## 問題文

>1行目に行数を表す整数 n、続く n 行の各行で「文字」と「整数」の組が空白区切りで入力されます。
>n 個の組について、「文字」の値が同じ組同士の数値を足しあわせてまとめ、まとめた数値の降順で
>文字とまとめた数値の組を出力してください。
>この際、まとめた数値は重複しません。

## 入力される値
入力は以下のフォーマットで与えられます。

n
S_1 D_1
S_2 D_2

S_i D_i

S_n D_n

S_i

元記事を表示

wavファイルの作成

何故か急にwavファイルを作りたくなったので作成してみましたので、その際に覚えた知識をメモとして残します。

# ライブラリ
本投稿では下のライブラリを使います。
* math(正弦波を作成するため)
* numpy(1次元配列を扱うため)
* scipy(wavファイルの作成のため)
* playsound(wavファイルの再生のため)

# 波形を作る
サンプルとして100Hzの正弦波を作成します。なお、サンプリングレートを44100Hzとするため、441個で1周期となる正弦波を100個(つまり1秒分)作成しています。
“`python:
import math
data = [ math.sin(2 * math.pi * i / 441) for i in range(44100) ]
“`

# データを整数化する
wavファイルにするには`int16`にしないといけないので、波形の最大値で割り、`int16`の正の最大値である`32767`を掛けてから、`int16`にしています。
“`python:
import numpy as np
data2 = np.int

元記事を表示

Dockerを用いてLabelImgを使用する on Ubuntu

# やり方

下記の内容を記述したDockerfileを用意します。

“`docker
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y pyqt5-dev-tools python3-pip git
RUN git clone https://github.com/tzutalin/labelImg.git && \
cd labelImg && \
pip3 install lxml && \
make qt5py3
CMD [“python3″,”labelImg/labelImg.py”]
“`

イメージをビルドします

“`bash
$ docker build -t labelimg .
“`

GUI表示ができるように設定します

“`bash
$ xhost +
“`

コンテナを作成・実行します

“`bash
$ docker run -it –rm -e DISPLAY=$DISPLA

元記事を表示

40代おっさんPythonを勉強する(データ構造と組み込み関数④)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## データ構造と組み込み関数

前回の記事


### 辞書型

– 辞書型の作り方
– 基本的な代入

“`python
dic1 = {1:’a’, 2:’b’, 3:’c’ } # 辞書型は{}
print(dic1)
“`

– リストやタプル型から

“`python
pairs = [(1, ‘a’),(2, ‘b’),(3, ‘c’)]
dic1 = dict(pairs) # dictの変換関数で辞書型を作成
print(dic1)
“`

元記事を表示

【Python】CSVファイルに出力する時系列データを更新させない方法

# 現状
Arduinoを使ってセンサのデータを取得し,取得したデータをPythonで受け取ってCSV形式で保存したい.実装したところ,CSVファイルで時系列データが更新されてしまう.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/e62a4ff8-3bc3-4a09-a634-548bf43256ff.png)

“`python:該当プログラム
date = datetime.datetime.now().strftime(‘%Y-%m-%d %H:%M:%S’)
with open(‘./data.csv’, ‘w’ , encoding= ‘utf-8’ ) as f:
print(‘{},{}’.format(date,data),file=f)
“`

# 解決方法
 `open(ファイル名, モード)`でファイルをモードに従って開く.モードを`a`に変えることで解決できた.`w`は書き込み専用で,ファイルへの書き込みは,同じファイル名の

元記事を表示

Pythonをpyenvを用いて管理する(Mac向け)

## はじめに
ローカルマシンで複数のプロジェクトを開発する時にバージョンの異なるPythonを使うことは往々にしてあると思います。
単一バージョンをインストールしていると、毎回インストールとパスを通す作業が発生しますが、
pyenvの場合はコマンドだけでPythonのバージョンの切り替えが可能です。
(最近はDockerを使うのでホストマシン側のPythonに依存することは少ないかもしれませんが。。)

今回はpyenvのインストールとバージョン変更手順を説明します。

## Homebrewのインストール
ターミナルを開き、以下のコマンドでMacのパッケージ管理ツールのHomebrewをインストールします。
“`
% /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`
参考
https://brew.sh/index_ja

## pyenvのインストール
ターミナルで以下のコマンドを実行します。
“`
% brew install

元記事を表示

MetPyの単位変換

# はじめに

MetPyという気象系Pythonライブラリは,’unit-aware calculations’(単位を陽に定義する計算)の精神に基づき作成されており,事前に変数の単位を定義しておけば単位変換を”よろしく”やってくれるので,つまらない計算ミスを減らすことができる(と思っている).

単位変換を簡単にできるのだが,データのクラスによって使い方が異なり困惑したので,まとめておく.

結論から書くと,pint.quantityは`.to()`というメソッドを,xarary.DataArrayには`.metpy.convert_units()`というメソッドを使う.

# unitsの使い方とpint.quantity

metpy自体はpipやcondaやmacportsで簡単にインストールできる.([Install Guide – Metpy User Guide](https://unidata.github.io/MetPy/latest/userguide/installguide.html))

metpy.units.unitsをインポートする.fromを使う

元記事を表示

metpy.unitsをxarray.DataArrayに適用するワンライナー

# はじめに

[MetPy](https://unidata.github.io/MetPy/latest/index.html)は,[xarray](https://docs.xarray.dev/en/stable/)(多次元データ解析ライブラリ)と[pint](https://pint.readthedocs.io/en/stable/)(単位の概念を付与するライブラリ)を組み合わせた,気象系計算ツールの豊富な大変ありがたいPythonライブラリである.
xarrayに基づいているので,netcdfとの相性はとても良く,使いやすい.

事前処理として,次元のある変数には単位(metpy.units.units)を定義する仕様となっているが,単一変数であってもxarray.Datasetには単位を定義できない,という落とし穴?がある.(複数変数を保持しうるので,考えれば当たり前のこと,,)

“` python3
import xarray as xr
from metpy.units import units

f = ‘file_name.nc’
v = ‘variabl

元記事を表示

40代おっさんPythonを勉強する(データ構造と組み込み関数③)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## データ構造と組み込み関数

前回の記事

### リスト内包表記

– リスト内包表記はPythonの特有な構文
– [式 for 任意の変数名 in range()など]

“`python
sep = [i for i in range(10)]
print(sep)
“`

– if-elseの条件分岐構文を使ってもよい

“`python
sep = [i for i in range(10) if i%2 == 0]
print(sep)
sep = [i if i%2 == 0 else None for i in range(10) ]
print(

元記事を表示

Django+AWS+freenomでhttpsを有効化するまでの話

# はじめに
今回はdjangoのアプリをAWSにデプロイし, freenomとRoute53とACMとELBを用いてドメインの取得とhttpsを有効化した際の方法について述べていきます.
かなりボリュームがあるのですが, サラミ出版みたいになるのが非常に嫌だったので, 1つの記事にまとめさせていただきました.

本記事の構成は以下のようになっています.
[①djangoのアプリをAWSにデプロイするまで](#djangoのアプリをawsにデプロイするまで)
[②freenomとRoute53を用いてインスタンスにドメイン名でアクセスするまで](#freenomとroute53を用いてインスタンスにドメイン名でアクセスするまで)
[③ACMとELBを用いてhttpsを有効化するまで](#acmとelbを用いてhttpsを有効化するまで)

djangoのアプリ制作が完了済みで, 既にGitHub上に公開されているという前提でお話をします.
NginxやApachといったサーバアプリを使用せず, RDSなども使わず, djangoにデフォルトで備わっているもののみで実装することを

元記事を表示

How to chage your default python version from 2 to 3 on Mac?

Entry the following command on your console.

sudo ln -nfs /usr/local/bin/idle3 /usr/local/bin/idle
sudo ln -nfs /usr/local/bin/pydoc3 /usr/local/bin/pydoc
sudo ln -nfs /usr/local/bin/python3 /usr/local/bin/python
sudo ln -nfs /usr/local/bin/python3-config /usr/local/bin/python-config
sudo ln -nfs /usr/local/bin/pip3 /usr/local/bin/pip

Finally, udpate your profile:

source ~/.bash_profies

元記事を表示

[Python入門] #1 HelloWorldとPrintについて

# 目次
[1.はじめに](#1-はじめに)
[2.前回のおさらい](#2-前回のおさらい)
[3.HelloWorldの解説](#3-HelloWorldの解説)
[4.printについて](#4-printについて)
[5.使ってみよう](#5-使ってみよう)
[6.さいごに](#6-さいごに)
# 1. はじめに
この記事ではPythonでのコードの書き方について簡単に説明します。今回は主に**Print**を扱いますので、すでにPrintの使い方を理解している人は次の記事に進んでください。
Replitなど(オンラインエディタ)でも同様にコーディング可能ですので、ぜひご活用ください。
(この記事はWindows向けで、筆者はWindows10・Python3.9・メモ帳を使用しています。)
# 2. 前回のおさらい
Python3のインストールなどの環境構築と、少しだけコーディング。
前回紹介の**HelloWorld**についても今回解説します。
# 3. HelloWorldの解説
“`py
# HelloWorldを表示するコード
# ‘#’はコメントを意味します。

元記事を表示

[Python入門] #0 環境構築

# 目次
[1.はじめに](#1-はじめに)
[2.Pythonについて](#2-Pythonについて)
[3.インストール](#3-インストール)
[4.スクリプトエディタ](#4-スクリプトエディタ)
[5.使ってみよう](#5-使ってみよう)
[6.さいごに](#6-さいごに)
# 1. はじめに
Pythonに関して基礎の基礎に関する質問をもらうことが結構あったので基礎に特化した記事を書いてみようと思い書いている次第です。
この記事ではPythonを使う前に、環境構築について説明します。もうすでに構築済み、理解できているという方は次の記事に進んでください。
(この記事はWindows向けで、筆者はWindows10を使用しています。)
# 2. Pythonについて
グイド・ヴァン・ロッサムにより創り出され、1991年にリリースされたプログラム言語の一種です。Python2とPython3があり、場合によっては2のみ3のみのものも存在するので気を付けてください。Python2はサポートも切れているため、**この記事では “Python3.9” を使用します。**
# 3. イン

元記事を表示

40代おっさんPythonを勉強する(データ構造と組み込み関数②)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## データ構造と組み込み関数

前回の記事

### スライシング(slicing)

– スライスで部分的な文字列を取り出す
– 指数はいつも0から始まる
– Pythonで start:end:step というレンジの指定がスライスする(startは含むがendは含まない)
– endを指定しなかったら、最後までと言うこと
– stepを指定しなかったら、step=1になる
– ここで一つ覚えておきたい関数があって、len()という関数は文字列(時にはオブジェクト)の長さを返す

“`python
str2 = ‘利樹は大好きだよ!’
print(str2[2])
print(str2[-1]) # 後ろから
print(str2[5:8])
print(str2[:7])

元記事を表示

python-argcomplete python3で使うときに引っかかった話(Ubuntu 22.04)

# python-argcomplete が使えない
久しぶりにansibleを使ってみようかなと思いまして、公式サイトのインストール手順を見直していたのですが。
最初の方で推奨されているコマンド補完用のpython-argcompleteがどうにも動きません。
で、ちょっとコード読んで問題箇所見っけたのでメモります。

# 環境
Ubuntu 22.04。
以下を導入済み。

“`
$ sudo apt install python3-argcomplete
$ sudo activate-global-python-argcomplete3
“`

Ansibleのサイトでは”3″をつけない手順が紹介されています。
https://docs.ansible.com/ansible/2.9/installation_guide/intro_installation.html
(ちなみにこの手順で落とすと、今だと2.13.5が落ちてくるので、2.9用手順となっっているのがちょっと気持ち悪くはありますが)

現状ubuntu 22.04では無印は配布していないようですので、”3″付き

元記事を表示

Switchbot API V1.1のアクセスに必要なヘッダーを作る方法を調べました

# 事の始まり
Switchbotのデータを読み込んだり、操作するために必要なことを調べていたら、Switchbot APIを利用するのが良さそうだと言うことで、[【SwitchBot】基本的な API の使い方](https://note.com/klayer123/n/nb14086840351)と言う記事に辿り着きました。とりあえず試してみようと思ったのですが、なぜかエラーが発生。コピペだけで済ましているので、エラーの本質的な理由が分かりませんでした。
## 何が悪かったのか、結論
簡単に書くと、参考記事の時とAPIのバージョンが変わっていました。バージョンが変わっていようと、今でも古いv1.0は残っているので、とりあえず動作しないかと色々原因を追求したところ、v1.0のAPIでは新しいデバイス(当方の環境では[Switchbotキーパッドタッチ](https://www.switchbot.jp/collections/new-products/products/switchbot-keypad-touch)が該当)の情報を返すことができないと言うのが理由でした。新しめのデバイ

元記事を表示

40代おっさんPythonを勉強する(データ構造と組み込み関数)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## データ構造と組み込み関数

### strの関数format

– format関数の基本的な構造:’文字列{}’.format(引数)
– 引数の場所を指定しないとき順番で代入するが、場所指定があれば、指定した順番で代入する
– 文字列に変数の値を埋め込む
– 変数がリストやタプル、シーケンス型の場合は、{0[0]}を使って何番目かの要素を指定できる
– {0[0]}であれば、0番目の引数の0番目の要素を表す

“`python
fruit1 = (‘みかん’, 80)
fruit2 = (‘バナナ’, 50)
fruit3 = (‘リンゴ’, 100)
str3 = ‘{0[0]}一つ{0[1]}円と{1[0]}一つ{1[1]}円、合わせて{2}円。’

total1 = str3.format(fruit2, fruit1, fruit2[1]+ fruit1[1])
prin

元記事を表示

40代おっさんPythonを勉強する(制御フロー編②)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 制御フロー

前回の記事

### 繰り返し(反復処理)

#### while

– 一定の条件がTrueになっている間にコードのブロックを実行する
– 条件がTrueのままだと無限ループする

“`python
i = 0
while i < 10: print(i) i += 1 ``` #### for - forループの場合はenumerableのオブジェクトの要素を反復的に処理する - ループの変数に要素を代入し、繰り返しブロックを実行する ```python collection = [1, 2, 3, 4, 5] for i in collection: print(i) address = [('としき','札幌市'

元記事を表示

40代おっさんPythonを勉強する(制御フロー編)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 制御フロー

### 条件分岐

– 条件によって分岐のコードを実行する(if-elif-else)
– ブロックは必ずインデントする
– 条件はTrue(真)かFalse(偽)を返す表現を使う
– 条件の後ろにコロン(;)をつける

“`python
a = 10
print(a > 0) # True
a = -10
print(a > 0) # False

if a > 0:
print(‘positive’)
else:
print(‘negative’) # negative
“`

*Pythonではインデントで実行ブロックを決定するから、バラバラなインデントは不可

“`python
a = 1
if a > 0:
print(‘成功’)
print(‘失敗’) # インデントがばらばらの為エラーがでる
else:
pr

元記事を表示

40代おっさんPythonを勉強する(入力、出力編)

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 出力と入力

### print()関数

– 変数や出力などを確認するのによく使う
– Pythonの特徴:複数の変数を一行で値を代入できる
– formatを使って、変数の値を文字列に代入する。引数の順序を指定して変数の代入場所を決める。

“`python
a, b = 3, 5
print(‘{1} + {0} = {2}’.format(a, b, a + b)) # {}の中がformatの順番を表す
“`

## input()関数

– ユーザーから入力を求めたい時はinpnt()をいう関数を使う
– 変数 = input(‘文字列’)のところで、入力ができるようになる
– 入力文を入れてEnterを押すと、入力文が変数に代入される
– Python3から全ての入力は文字列として返される

“`python
name = input(“あなたは誰が好きですか?”)

元記事を表示

OTHERカテゴリの最新記事