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

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

Pythonで簡単なGUIアプリを作成する

最近AIや分析等の分野で活躍しているPythonですが、普通のデスクトップアプリケーションの作成にも利用可能です。

今回はPythonに標準で付属しているGUIライブラリ「Tkinter(ティーキンター、ティケーインター)」を利用して、入力した値をターミナルに書き出す簡単なGUIアプリを作成します。

## 使うもの

私が動作を確認した構成は以下の通りです

– Python 3.7.3

IDEはVisual Studio Codeを利用しています。

## Python のインストール

公式サイトに行ってダウンロード&インストールを行ってください。

## とりあえずTkinterを使う

Visual Studio Codeにて「新しいファイル」をクリックして、「form.py」と名前を付けて保存してください。

プログラムの先頭にtkinterを利用しますよという宣言を記述します。

“`python
from tkinter import *
from tkinter import ttk
“`

次にメインとなるフォームを以下の様に定義します。

“`

元記事を表示

宮下の解析力学の例題、演習問題を解いてアニメーションで動かした

宮下解析力学の演習問題を解いています。間違い等を発見した人はご指摘していただくと幸いです。

# 1章
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/48a09ff3-594e-ddca-3c81-a80ad7161583.png)
長さが$l$の振り子の運動では角度$\phi$だけが実質的な変数である。質点の位置はデカルト座標ではなく、極座標で表したほうが便利になる。このように束縛条件を考慮した変数をうまく利用すると、運動の実質的な変数を扱うことができる。

### 振り子(図1.3)のラグランジアンを直交座標(x,y)で求めよ。(2章の例p.11)

運動エネルギーは$T=1/2m\dot{x}^2+1/2m\dot{y}^2$、ポテンシャルエネルギーは$U=mgy$
したがって、ラグランジアンは
$$L=\frac{m}{2}(\dot{x}^2+\dot{y}^2)-mgy$$
また、ここには束縛条件
$x^2+y^2=l^2$
がある。

### 振り子(図1.3

元記事を表示

DjangoのテストでDatetime.nowを固定したい

# はじめに
Djangoのテスト作っている時にどうしてもDatetime.now(timezone.now)を固定したかった。
そのメモです。

## やること
* mock.patch で モック作る

## コード
#### テストするコード
“`test_app/views.py
from django.utils import timezone

def hogehoge():
# タイムゾーン込みで現在時刻を取得 ex. datetime.datetime(2020, 10, 30, 15, 35, 29, 482661, tzinfo=)
return timezone.now()
“`
こんな感じのコードをテストしたい。

#### テストコード
“`test_app/tests.py
from unittest import mock

class TestClass(TestCase):
@mock.patch(“test_app.views.timezone.now”)
def test_hogeho

元記事を表示

SpiderのConfigを実行時に変更する。

#概要
### 前提
ScrapyのSpiderでは、設定ファイル(settings.py)やカスタム設定(custom_setting) でクローリング設定ができる。
ただし、この設定だけで済まそうとすると各設定(クローリングする深さ、優先度…)ごとにSpiderを作ることになり非常に管理コストがかかる。

### 本記事の内容
Scrapyのコマンドを調査したところ解消したので、記載する。

#やりたいこと
Spiderのソースコードを変更せずに、以下の設定を切り替える。

* クローリングする深さ(DEPTH_LIMIT)

#追加引数
「-s DEPTH_LIMIT=2」を追加することでクローリングする深さを、コマンド実行時に設定できる。

“`bash:cmdline例
crawl sample_crawler -s DEPTH_LIMIT=2
“`

#コード例
## Spider
Spiderのコード

“`python:spider.py
import scrapy
from scrapy.spiders import Rule
from scrapy.lin

元記事を表示

Pythonでモンテカルロ法を実装してみる

#はじめに
どうも、初めまして。この度、Qiitaで書き始めたものです。どうぞよろしくお願いします。さて、最初の記事は何番煎じかはわかりませんが、モンテカルロ法をPythonで実装する方法を記事にすることにしました。
#モンテカルロ法とは
そもそも、モンテカルロ法とはどんな方法か。ご存じの方も多いとは思いますが、今一度説明します。数値解析におけるモンテカルロ法は、確率を近似的に求める手法によく使われています。また、二次元上における閉曲面に囲まれた面積を求めることもできます。今回は、モンテカルロ法で円周率を求めてみます。
#モンテカルロ法による円周率の求め方
まず、下の図のようなものがあるとします。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/835335/7ea045d0-3577-bdd2-9eb8-e0b0cbdcbad0.png)
青線は半径が1の円の円周を表しています。ここに、ランダムで点を置いていき、置いた数($n$)と円周内に置かれた点の数($p$)を数えます。そして、モンテカルロ

元記事を表示

python学習(補足)

先に記載したpythonのCSVモジュールについての補足である

正直ドキュメントやググれば分かる内容だが、
備忘録として残しておく

CSVファイルを開いて別ファイルにそのまま書き出したい場合
リスト形式で渡すにはreaderメソッドを使う

この時readerメソッドの返り値はもちろんリスト形式となる

“`
import csv

data=[]

#CSVをリスト形式で読み込む
with open(‘data.csv’ , ‘r’, newline=” , encoding=’utf-8′) as f:

r = csv.reader(f)
data = [ i for i in r ]

#CSVをリスト形式で書き込む
with open(‘data.csv’ , ‘w’, newline=” , encoding=’utf-8′) as f:

w = csv.writer(f)
w.writerows(data)
“`

この時dataに入るのは以下のような多重リストとなる

“`
[[‘python’, ‘1’], [‘php’

元記事を表示

python学習

pythonの学習をするにあたって開発エンジニアではない私のようなインフラエンジニアでも
すごくわかりやすく説明してくれるudemyのpython講座をお勧めしたい
特に講師の酒井潤さんは話し方も聞き取りやすく内容もかなり広い部分を網羅しているので、
実際にコードスタイルにも言及していたり実務的なナレッジも学べるのでありがたい
(※個人的にはこういうのはあまり市販の本を読んでもわからないとことだと思う)

https://www.udemy.com/course/python-beginner/

その課題の中にQ&Aでロボットがお勧めのレストランを聞いてきてその答えをCSVに書き出して答えの数をカウントアップしていくという課題があるのだがこれが難しい。。。

正直ここで一度挫折して投げたのだが最近また別件でPythonを触れる機会がありまた勉強意欲が再燃した

まだ先の課題の完成には程遠いがCSVにカウントアップされる処理について根底の部分はできたので、
自分がハマったところについて備忘録として残しておく。

【はまった部分】
まずCSV上で入力した内容のカウントアップという処理がで

元記事を表示

django-allauthで、CustomUserを使って複数種類のユーザを管理する(multi type user)

# 概要
– Djangoで、複数のユーザ種別を作れるシステムが欲しい
– 「サプライユーザ」「バイヤーユーザ」の2種類のユーザを作れるようにする
– ユーザ種別ごとに、異なる属性を持たせる
– サプライユーザは会社名、バイヤーユーザは最寄り駅を登録できるようにする
– 環境は、
– Python 3.6.9
– Django 3.1.1
– django-allauth 0.42.0 (ソーシャルログイン機能)

# Python + Django の制限
– ユーザ認証(ログインやサインアップ)に使用できるモデルクラスは1つだけ
– settings.pyの `AUTH_USER_MODEL` で指定する

# 実装の概要
– CustomUserモデルを1つ作り、userTypeをもたせる
– ユーザ種別ごとの情報は別テーブルに持ち、カスタムユーザクラスと`OneToOneField`で紐付ける
– UserDetailSupplier
– UserDetailBuyer
– ユーザの保存にはアダ

元記事を表示

Mac上でPythonかGolangでGUI開発環境を整えたい

またまた無職になった。
ニート期間中に技術力を上げるため、就職活動しながら勉強することにした。

# スクリプト言語の勉強
一昔前はPerl言語に熱中していたが、数年間離れた生活をしていた。
不倫したと思われたのか、一目Perl言語を見ただけでは理解できない感じにふてくされた態度を取られた。
構ってあげなかった私に問題があるのかもしれないが、このまま分かれようと思う。
一体いくらつぎ込んだのか分からないぐらい膨大な書籍代だが、私の一方的な貢ぎ方に問題があったと思って諦めることにする。
心機一転し、異なるスクリプト言語に本腰を入れようと思う。
しかし、まだ本命を決められないでいる。

## 本命選び
今の考えは2点ある。

* Python
* Golang

テキスト処理をしたいが、それはPerl言語をさておき、上記2点は優劣付けがたいようだ。
ちょっと触った感じでは、Go言語の方が馴染みやすかった。
如何せん、ちょっとした処理とは言え、数週間や数ヶ月後には使い方を忘れているかもしれない。
それでもテキスト

元記事を表示

Pythonで使えるメモ

#Python 早引きメモ
プログラミングするときのコピペメモ

## 入力
1行の中に複数の値が入っているのを、分けて変数に入れる
`1 2` -> `a=1, b=2`

“`python
a,b = (int(x) for x in input().split())
“`

多重リスト

“`
table = [[0] * W for i in range(H)]
“`

複数行の場合
最初に、行数を指定

“`python
num = int(input())
a=list(range(num))
b=list(a)

for i in range(num):
a[i],b[i]=(int(x) for x in input().split())
“`

## 出力

“`python
num = “Yeah”
print(“Hello”,num) # HelloYeah
print(num,end=”) # Yeah (改行しない)
“`

## if文
インデントに注意!

“`python
if a == 0:
~~
elif a <

元記事を表示

pythonでSFTP通信したら地味にハマった話

#概要
海外のライブラリはエンコーディングの考えが適当なものがあるから注意って話。

#トラブル内容
業務上、pythonでsftpを触る必要が出たからparamikoを使用し、ファイルをFTPサーバから直接ダウンロードして中身のテキストファイルを統計処理にかけようとした。
[APIのドキュメント](http://docs.paramiko.org/en/stable/api/sftp.html)では「file()関数はpythonのfileと同じ用に使えるようにしてあるよ」ってあったので適当にパスなどを指定したら下記のエラーが出た。

> UnicodeDecodeError: ‘utf-8’ codec can’t decode byte ~~ in position ~~: invalid start byte

コードは下記のような感じ。

“`python

client = paramiko.SSHClient()
client.connect(適当な接続情報)
sftp_connection = client.open_sftp()

with sftp_connect

元記事を表示

pythonでmatplotlibがなんでインストール出来ないんだ!!

#この記事の内容
この記事では僕がpythonのライブラリーとして有名な**matplotlib**をインストールするのにとても苦労したので、matplotlibがインストール出来ない時の対処法について自分メモとして残して置きます。もしわからない事、意見がある人は遠慮なくコメントを書いてください。

#状況説明
python3.9を使っていて作図をしたかったので、pip3を使ってライブラリーのmatplotlibをインストールするために次のコマンドを打った

“`terminal
pip3 install matplotlib
“`

![スクリーンショット 2020-10-28 23.23.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581846/745630a3-f7d9-ce04-1b00-ea74a44f80c0.png)

**sudo**コマンドを使って管理者権限で実行しても同じエラーを吐く。パソコンの調子が悪いからインストール出来ないと思いパソコンを再起動するがまたエラー吐く。

元記事を表示

paizaで使えそうなpython3の処理

# python3 使えそうなもの

paiza取り組んでます。
自分用のメモです。
これからも追記していきます。

## 入力の配列格納処理

“`
# 入力を分割して配列に格納
x, y, z = [int(x) for x in input_line.rstrip().split()]
print(x + y + z)

# 入力を分割せず配列に格納
tem = [int(n) for n in input_line.replace(‘ ‘, ”)]

# 複数行の入力
input_ = [input() for i in range(len_)]

# 辞書型に格納
input_ = int(input())
dic = {input_[i].split()[0]: int(input_[i].split()[1]) for i in range(len(input_))}
“`

## 配列のソート

“`
# reverse=Trueで降順
nums = sorted(input_line, reverse=True)
“`

## for文

“`
# カウン

元記事を表示

素数かどうかを判断する【Python】

この記事では、
入力された値(n)が素数か素数ではないかを判断するプログラム
を書いていきます。

##素数とは
素数(そすう、英: prime number)とは、1 より大きい自然数で、正の約数が 1 と自分自身のみであるもののことである。
参照: 素数 – Wikipedia

##実行環境
– MacOS
– Python 3.7.5

##求め方
① 1以下または2の場合、素数かどうか記述する。
② 3以上の場合、2~nまでループして割り切れる数があるか調べる。
  割り切れる場合は素数ではない。
③ 関数を呼び出して、結果を表示する。

###① 1以下または2の場合、素数かどうか記述する
Falseの場合、素数ではない。
Trueの場合、素数。

“`python:prime_num.py
def prime_num(n):
# 1以下は素数ではない
if n <= 1: return False # 2は素数 if n ==

元記事を表示

networkxにおける条件に合う頂点の削除

#課題
プログラム内で定義したグラフから条件に合う頂点を削除しよう!
###今回の条件
– networkxを利用する
– グラフはプログラム内で定義する
– [次数が0の頂点]もしくは[次数が1の頂点とその頂点に接続する辺]を削除する。

#最初に考えたプログラム
“`python
import networkx as nx
import matplotlib.pyplot as plt
G=nx.Graph()
G.add_nodes_from([1,2,3,4,5,6,7,8,9,10])
G.add_edges_from([(1,2),(2,4),(3,2),(4,5),(6,10),(7,6),(8,6),(9,8),(10,8),(1,9),(8,1)])

#n=G.number_of_nodes()
#[次数が0の頂点]もしくは[次数が1の頂点とその頂点に接続する辺]を削除する
for v in G:
#print(G.degree(v))
#print(“v=”,v)
G_deg=G.degree(v)
if G_deg==0 or

元記事を表示

Blender 2.9, Python ビル、自動車、動画

ゆっくり進めたBlender動画制作ですが2ヶ月半でひとまず動画
[「ひらの眼科の駐車場案内の動画」 ](https://twitter.com/hiranoeye/status/1321265260888686595)
ができました。ここで一段落。
ほぼ全部をpythonで記述したい狙いはあったけど、最後にブックオフの看板あたりは手作業でテクスチャー貼り付けしました。4秒間の動画に2ヶ月半もかかったのはシロウトの効率の悪さですが、それはともかくとして「2ヶ月半、途中でやめなかった」達成感もあります。続けられた理由は

+ 製作途中を少しずつtwitterやQiitaで投稿したこと。未完成でも発信することで自分を前向きにできた。
+ 職場、自宅で短時間ずつ作業するよう保存場所はクラウド(dropbox)に置いたこと。
+ 英語日本語の両方でpythonスクリプト用例をたくさん調べたこと。

製作途中を発表するかどうかは好き嫌いもあるでしょうが僕は途中である程度人に見せる場を作った方がうまく進む体質のようです。日本語python資料もたくさん揃った2020年のネット環境ですが、「blen

元記事を表示

Blender 2.9, Python, 座標で複数メッシュ選択

3*5*5個の球体を作って、一部をz座標条件で選択、色をつける実験です。
前回の延長だからすぐできるんだろうと甘く見ていたら、「メッシュ複数選択」だけでも考える時間が結構かかりました。いろいろ調べて、obj.location.zと言う便利な指定方法があることがわかりました。 3色指定の色合いは 「坊ちゃん団子 / つぼや菓子舗」より。オブジェクトたくさん作って一部を選択するやり方の他にも、一つ作ってそれを複製、の方法もあるはずなので次回はそちらも挑戦の予定。

なお、オブジェクト の選択selection, アクティブ化activation について、参考にしたのは
[オブジェクトのアクティブ化【第 4 回 Python × Blender】](https://tamaki-py.hatenablog.com/entry/2019/05/28/180042)です。ただしblender 2.7向けというのが要注意です。
動画1秒 はtwitterに投稿。[blender 2.9, python. animation 1 sec. 動画1秒] (https://twitter.com/n

元記事を表示

Blender 2.9, Python, 16進で色指定

今日の課題は、HTMLで使う16進のカラーコードを使って
マテリアル色指定して、それを立体に反映させること。
まずは3色ほど指定。色合いは 「坊ちゃん団子 / つぼや菓子舗」(愛媛みやげ)を参考にしました。(数日前 Blender 2.8から 2.9に変えました。 2.8用Pythonスクリプトは2.9でも動いている様子です。)
References : StackExchange [Blender 2.8 (python) – How to set material color using hex value instead of RGB](https://blender.stackexchange.com/questions/153094/blender-2-8-python-how-to-set-material-color-using-hex-value-instead-of-rgb)

![bochadango1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690216/b18c600f-

元記事を表示

Blender 2.8, Python, カメラ移動、乱数色指定

Blender 2.8, Python での3D動画作り、
今回は円周沿いカメラ移動と乱数色彩の素材指定と太陽光です。
![bpy_nh18g_scrn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690216/45dbfe30-800a-e9ea-cfb4-5129d7f10c84.png)

動画はこちら
[blender 2.8, python movie 1 sec. 360kB. camera motion along a circle. ](https://twitter.com/naohiko7/status/1302806811288846337)

100個くらい建物(単に直方体)作ると1秒で800px*600pxでも682kBになりました。
まだまだ色の指定と光の具合がうまくつかめません。
太陽光が届かない建物の影には空の青い色が反映されているのだろうなと考えてます。

ところで、良いプログラム(ソースコード)の条件。
自分が何度か書いて、忘れて、また見直して、再利用して、の経験で

元記事を表示

Blender 2.8, Python 立方体 、照明、カメラ円周移動

今回カメラ移動が主題です。円周沿ったカメラ移動を紹介した youtube 動画 “Blender 2.8 Set Up a Camera Rig and Animate On A Path”これの(前半6m50sec まで)をPython スクリプトにしました。z軸方向移動まだやっていません。(bpy_nh13)
動画はtwitter投稿のこれです
[blender 2.8, python. 1-second movie. 242kB. Camera movement along a circle. ](https://twitter.com/naohiko7/status/1299228942960701446)
なお offset factor の関連は[Insert keyframe to object’s Offset Factor Python API]
(https://blender.stackexchange.com/questions/185082/insert-keyframe-to-objects-offset-factor-python-api)を読んで参考にし

元記事を表示

OTHERカテゴリの最新記事