Python3関連のことを調べてみた2021年05月16日

Python3関連のことを調べてみた2021年05月16日

(備忘録)Pythonで入試問題の答えを出してみた(初心者向け)

# はじめに

Pythonには様々なライブラリがあり、標準・外部ともに便利なものがたくさんあります。

その中で、今回は外部ライブラリであるsympyを用いて、数学の入試問題の答えを出してみようと思います。

  ・プログラミングを通して、数学を勉強してみたいと思ってる人
  ・数学に対して苦手意識を持ってる人
  ・何か作りたいものはないけど、プログラミングを始めてみたい人

Pythonを通して、数学と戯れましょう!!
解いた問題は、qiitaに備忘録として投稿し、他の人にも共有してみましょう!!

! まずは、方程式の解、三角関数、微分、積分から手を出してみるのはどうでしょうか。
! 外部ライブラリは、ただPythonをインストールした段階では使えません。インストール方法は難しくないので各自で調べてみてください。

# 目次

1. [積分](#Chapter1)
1. [三角関数](#Chapter2)
1. [実数解と虚数解をもつn次方程式](#Chapter3)
1. [参考文献](#refer

元記事を表示

【Python×Tkinter】パス指定ではなくGUIでファイルを選択する方法

#はじめに
普段Pythonで何かファイルを操作するとき、ディレクトリを移動したりパスを指定してファイルを読み込むことが多いと思います。しかし自分が作ったプログラムを他人(非プログラマー)が使うとなったら、人によっては自分でコードを書き換えてパスを変えるとか難しいですよね。また自分で使うにしても、読み込むファイルが毎日変わるものであればいちいちコードを書き換えるのは面倒ですよね。

そんな方のために今回はGUIからファイルを選択できるようにする方法を解説します。

#準備
“`python
import tkinter
import tkinter.filedialog
import tkinter.messagebox
import os
“`
Tkinterというライブラリを使っていきます。読み方は「ティーキンター」です。
PythonのGUI系ライブラリの中ではかなり有名で、よく使われているものだと思います。
ちなみにTkinterだけインポートしてもファイルダイアログとメッセージボックスは使えないので、この2つもtkinter単体とは別にインポートします。あとエクスプロー

元記事を表示

Pythonでヌメロンを作ってみた

## はじめに

前回、じゃんけんプログラムを作成しました。
その記事を書きながらヌメロンを作っていました。
じゃんけんと同じく、解説しながら残しておきたいと思います。

そういえば前回のじゃんけんプログラム、pythonの有識者の方から、より洗礼されたコードによってめちゃくちゃ短くなりました。
こんな短くなるとは。
感動です。

さて、最初の語りはこれぐらいにして、早速本題です。

## ヌメロンとは

ヌメロンとは、数当てゲームです。
相手が選んだ3桁の重複していない数字と、その数字の場所(桁)まで当てるのが勝利条件です。

ですが、ただ当てずっぽうに数字を選ぶだけでは運ゲーになってしまいます。
そこで、EATとBITEという数を分析しながら、相手が選んだ数字を当てていきます。

EATとは、選択した数字と桁の位置まで同じときに1カウント
BITEとは、選択した数字が同じで、桁の位置が違うときに1カウント
となります。

例えば、相手が「123」と数字を選んだ場合、以下のようになります。

“`
相手:「123」
「452」:0eat/1bite
「167」:1eat/0bite

元記事を表示

例題演習matplotlibのまとめ

Pythonのmatplotlibライブラリで,グラフ作成を学ぶ.
サンプルコードは細部までグラフの設定ができるものを用意した.
そのサンプルコードをもとに,例題と演習でmatplotlibの使い方を習得する.

## 例題演習matplotlib(1) 最初の一歩
https://qiita.com/s4s/items/33323d95b93c8ceec52d

## 例題演習matplotlib(2):単純な折れ線グラフ
https://qiita.com/s4s/items/11db1cdb4c604e1dd42a

## 例題演習matplotlib(3):Axes(軸)の設定
https://qiita.com/s4s/items/99c8c6aad1339dfbc544

## 例題演習matplotlib(4):Legend(凡例)の設定
https://qiita.com/s4s/items/2b5ef8a1dc96db790070

元記事を表示

例題演習matplotlib(4):Legend(凡例)の設定

# 例題(4):凡例の設定
凡例(Legend)関連の設定について学ぶ.

## 例(1):サンプルコード
基準となるサンプルコードを以下に示す.

“`python:plot04_example1.py
import numpy as np # numpy
import matplotlib.pyplot as plt # matplotlib plt
import matplotlib.ticker as ticker # matplotlib ticker

def main():
”’main program”’

# setting
f_out = ‘graph04_example1.png’ # output file (figure)

# data
x = np.arange(0, 10.1, 0.1)
y1 = -np.sin(x)
y2 = np.sin(x)
y3 = np.cos(x)
data = {‘p1′: [x, y1, r’

元記事を表示

【自然言語処理】1-gram言語モデル

# ■ やること
NAISTの授業資料を自分なりに勉強してみる。
http://www.phontron.com/teaching.php

今回の内容は [チュートリアル1: 1-gram言語モデル](http://www.phontron.com/slides/nlp-programming-ja-01-unigramlm.pdf)

# ■ 言語モデルとは
いくつかの候補から「もっともらしい」文を選んでくれるもの。
言語モデル(**確率的言語モデル** )は候補の各文に確率をあたえ、どの候補が確からしいのか判断できるようにしてくれる。

# ■ 文の確率計算
例えば `W = speech recognition system` の確率は以下の式で表せる。

“`
# 単語数が3, 1単語目がspeech, 2単語目がrecognition, 3単語目がsystem の同時確率 という意味
P(|W| = 3, w_1=”speech”, w_2=”recognition”, w_3=”system”)
“`

ただし、この同時確率はそのまま計算できないので、条件付き確率の

元記事を表示

新しいmacを買ってから、AWS CLIにprofileを設定するまで

# はじめに

新しいmacで何もしていない状態なので、Homebrewのインストールなど、すでに済んでいる場合は飛ばして進めてください!

1. [Python3のセッティング](#1-python3のセッティング)
1. [Homebrewをインストール](#homebrewをインストール)
1. [pyenvをインストール](#pyenvをインストール)
1. [PATHを通す](#pathを通す)
1. [pyenvでPythonをインストール](#pyenvでpythonをインストール)
1. [Pythonのバージョンを変更](#pythonのバージョンを変更)
1. [Pythonのバージョンを確認](#pythonのバージョンを確認)
1. [AWS CLIのインストール](#2-aws-cliのインストール)
1. [インストーラをダウンロード](#インストーラをダウンロード)
1. [インストールプログラムを実行](#インストールプログラムを実行)
1. [AWS CLIのバージョンを確認](#

元記事を表示

一定期間が過ぎたら使用できなくするコードの作成

#背景
pyinstallerとかでexe化してお試し版を配布する際に、使用期限を付けたいときのコードです。自分で作ったexeが勝手に独り歩きしてあちこちで配布されないために…。

#コード説明
1:今日の日付を入手
2:使用制限”limitdate”を記載して、日付方式に変更。
3:日付を比較して、使用期限を過ぎていないようであれば、何か他の操作に移る。
 (ここではOKがプリントされます)

“`python:limit.py
from datetime import datetime

today = datetime.now()

def LIMIT():
limitdate= str(“2021/05/19″)
limitdate = datetime.strptime(limitdate,”%Y/%m/%d”)
if limitdate >= today:
print(“OK”)
else:
sys.exit()

LIMIT()

元記事を表示

pythonで作成されたファイルの上書き保存を回避するために

#背景
アウトプットとしてExcel等のファイルを書き出す場合、保存先のフォルダに同一名の大切なファイルがあったのに上書きされちゃって、後々にしまった!と思ったことがあるので、備忘録もかねて同じファイルが存在したら(1)、(2)、(3)…とナンバリングされるようなコードを書きました。
(環境はwindows10のpython3.7.1です。)

#コード説明
###while文の前の準備
1:ファイル名を記載。(ここでは”テスト.xlsx”)
2:ディレクトリからファイル名のリスト(files)を取得。
###while文1周目
1:while文でもし、同じ名前のファイル(”テスト.xlsx”)がファイル名のリスト”files”中にあったら”(1)”をつける。
 (”テスト.xlsx”から”.xlsx”を一度消去して、”(1).xlsx”を付けています。)
2:number という変数で”(num-1)”つまり(0)がファイル名にあれば消えるようにする。
 (1周目のwhile文ではこの操作は関係ないです) 
3:num =2になる。
###while文2周目
1:もし”テスト(1)

元記事を表示

【AtCoder】ABC200をPython3で解説

ABC200の解説。

https://atcoder.jp/contests/abc200

## A – Century
### 解説
年→世紀を求めるには、年から1を引いて、100で割って、1を足す。

### コード
“`python
N = int(input())
print((N-1)//100+1)
“`

## B – 200th ABC-200
### コード1(“`int“`のまま)
“`python
N, K = map(int, input().split())

for _ in range(K):
if N % 200 == 0:
N //= 200
else:
N = N * 1000 + 200

print(N)
“`
※“`int“`のまま計算する方法。
 “`N“`を1000倍して、“`200“`を足すことで実装。
### コード2(“`str“`に置き換える)
“`python
N, K = map(int, input().split())

for _ in ra

元記事を表示

AtCoder Problems Hard No.91~100解説

#Hard No.91 : D – Coloring Edges on Tree
[D – Coloring Edges on Tree](https://atcoder.jp/contests/abc146/tasks/abc146_d)
##発想
使用する色の数$K$はグラフの中で1つの頂点を端点とする辺の数の最大値になります。1つの頂点に接続している辺を順番に1,2,3…と色分けしていけば良いです。

##実装
幅優先探索をしていきます。

“`python
from collections import deque

N = int(input())
G = []
for _ in range(N):
G.append([])
for i in range(N-1):
a, b = map(int, input().split())
a -= 1
b -= 1
G[a].append((b, i))
G[b].append((a, i))

k = 0
for i in range(len(G)):
k = max(

元記事を表示

Djangoのmiddleware_chain

## 今回やる事

Djangoのmiddleware_chainの挙動に興奮したので、簡単なコードに書き換えて挙動を分かりやすく整理してみた。

## どこの部分の話か

Djangoで立てたサーバーに、リクエストが来た時にミドルウェアを通して動くように実装されている部分。

## middleware_chainとは

おおまかにまとめると、settings.pyで指定したミドルウェアリストの上から順にリクエストを渡し、一連のミドルウェアの処理が終わったら最終的にレスポンスが返されるやつ。

デコレータの仕組みにより、ミドルウェアリストを逆順でループさせて、後続のミドルウェアを自身のメソッドとして登録していく事で、この一連の流れを作っている。

まさにその名の通りの動きをする。

## 簡単に実装してみた

※色々省きます。

まずはミドルウェア関連

インスタンス化されると、引数で渡されたget_responseを自身のインスタンスにセットする。

##### コールで呼ばれたら
1. process_requestが実装されていたら実行する。
2. self.g

元記事を表示

Pythonを使ってElasticsearchへ文字列の配列を登録する方法

Pythonを使用してElasticsearchへ
文字列の配列を登録する

Elasticsearchのマッピングは特殊なことはなく,
typeをキーワードに指定すれば良い

“`mapping.py
#!/usr/bin/python3
# -*- coding:utf-8 -*-

from elasticsearch import Elasticsearch

es = Elasticsearch(‘http://localhost:9200’)
mapping = {
“mappings”: {
“properties”: {
“category” : {“type” : “keyword”}
}
}
}

es.indices.create(index=”test”, body=mapping)
es.close()
“`

“`
$ ./mapping.py
“`

にて,マッピング

“`regist.py
#!/usr/bin/python3
# -*- coding:utf-8 -*

元記事を表示

【Python】再帰なしでワンライナーフィボナッチ数列【ネタ】

ちょっとやってみたくなっただけです。

“`python
print([(j:=i+(i:=j)) for _ in range(100)] if (i:=1)|(j:=0) else 0)
“`

元記事を表示

pandas基本操作まとめ

# 0. 本記事の概要
Kaggleのコース
https://www.kaggle.com/learn/pandas
をベースとして,pandasの基本操作を纏めました.
元コースとくらべて,若干順番が前後していたり,省略あるいは追記している部分があります.

# 1. データの作成,データの読み込み
pandasのデータ→DataFrame,またはSeriesで管理する.
DataFrame:一般のテーブルデータを取り扱う型.
Series:リストを取り扱う型.すなわち,単一の列データのみ保持する.

“`.py
import pandas as pd

test_data1 = pd.DataFrame({‘type’: [‘A’, ‘B’, ‘C’, ‘A’, ‘C’,], ‘columnA’: [1, 2, 3, 4, 5], ‘columnB’: [6, 7, 8, 9, 10]})
test_data2 = pd.Series([1, 2, 3, 4, 5])

“””test_data1
type columnA columnB
0 A 1

元記事を表示

Pythonのバージョンが2から3に変わらない現象【体験談】

エンジニア歴2年のkitagawaです。

Pythonを触り始めて、バージョンが変わらない現象が起きました。
調べてみてたくさん記事が出てきましたが、手っ取り早くバージョンアップできる方法を忘備録として記載します。

“`
% python -V
Python 2.7.16
“`

と表示されてしまいます。

そこで、`~/.bash_profile`の内容を変更し反映させれば、最新のバージョンになります。

“`
vi ~/.bash_profile
“`

“`~/.bash_profile
export PATH=/Library/Frameworks/Python.framework/Versions/3.9/bin:$PATH
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init -)”
“`

上記が記入できたらESC押下し、`:wq`と入力で保存して終了。(`:qa`だと保存せず終了)

`source ~/.bash_pro

元記事を表示

import thisコマンドでPythonの禅(The Zen of Python)

pythonのインタラクティブシェル上で、”import this”コマンドを実行すると、
“The Zen of Python”(Pythonの禅)というPythonプログラムを書く上での19の指導原則が表示される事を知りました。

こんな感じです。

“`
$ python
Python 3.9.0 (default, Jan 9 2021, 22:05:52)
[Clang 12.0.0 (clang-1200.0.32.28)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is bett

元記事を表示

ABC192 E Train ~Dijkstraの実装でハマった話~

#はじめに
 本記事は競技プログラミングにおいて解くのに困った問題について、なぜその解法に思い至るのか、どのような所でハマったか等のポイントをメモした、筆者の筆者による筆者のための備忘録となっております。読まれることを意識していないので文章がとっ散らかってます。

#問題
問題は[こちら](https://atcoder.jp/contests/abc192/tasks/abc192_e)。

**概略**
 $N$個の頂点と$M$本の辺からなる無向グラフがある。辺$i$は頂点$A_i, B_i$を結んでおり、この間の移動には$T_i$の時間を要する。ただし時刻が$K_i$の倍数である時のみこの辺の移動を開始できる。
 頂点$X$を時刻0に出発して頂点$Y$に到達するまでの最短時間を求めよ。 

#提出解答
提出解答は[こちら](https://atcoder.jp/contests/abc192/submissions/22560027)。

“`ABC192E.py
from heapq import heappush, heappop, heapify
n, m, x, y =

元記事を表示

【Python × Excel】OpenpyxlでVlookupをやってみる

#はじめに
PythonでExcelを操作していて、Vlookupしたいときありませんか?Vlookup便利ですよね。
ということでOpenpyxlを使ってブックをまたいでVlookupする方法を解説します。

今回は下記の評価データと給与データをサンプルとして使用します。

評価データ
![評価.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646654/ecb0e63a-a4c0-6147-3cb9-53445376918d.png)

給与データ
![給与.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646654/ec67c105-e969-3d88-de9c-02e3c1298d7b.png)

#準備
必要なライブラリをインストールしましょう。今回使うのはOpenpyxlです。

“`python
import openpyxl as px
“`

#必要ファイルの読み込み
ここで評価データと給与データの

元記事を表示

AtCoder Problems Hard No.81~90解説

#Hard No.81 : C – Boxes and Candies
[C – Boxes and Candies](https://atcoder.jp/contests/abc048/tasks/arc064_a)
##発想
隣り合う2つの箱のうち、どちらの箱からどれだけキャンディを取れば良いのか。左から箱を見ていって、$i$番目と$i+1$番目の箱うち、$i+1$番目から可能な限りキャンディを食べるのが良いです。なぜなら$i+1$番目からキャンディを食べることで$i+2$番目の箱から食べるキャンディの個数を少なくすることができるからです。
##実装

“`python
N, X = map(int, input().split())
A = list(map(int, input().split()))

ans = 0
for i in range(N-1):
if A[i] + A[i+1] > X:
#食べるべきキャンディの個数
x = A[i+1] + A[i] – X
ans += x
A[i+

元記事を表示

OTHERカテゴリの最新記事