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

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

Pythonで重複ありの組み合わせ

ここではPythonを使って重複ありの組み合わせが何通りあるかを計算するコードを書いていきます。

### factorialを使う。

“`ruby:

from math import factorial

print(“2つの正の整数を入力してください。”)
a, b= map(int, input().split())
h = (factorial(a+b-1))/(factorial(b)*factorial(a-1))
print(str(a)+”個のものから”+str(b)+”個のものを重複を許して選ぶ方法は”+str(h)+”通りです。”)
“`

以下の様に書くとmathに含まれる関数を全部見れます。

“`ruby:
import math
help(math)
“`

### factorialを使わない。

“`ruby:
print(“2つの正の整数を入力してください。”)
a, b= map(int, input().split())
n = a + b -1
m = n
l = a-1
while n > b+1:
m = m *

元記事を表示

Python3とtkinterでボタンの実装にてこずる話

##経緯
退屈なことはPythonにやらせなさいと教わったので、そうしようと思いました。
とりあえずCUIベースでいろいろ作って、それはそれは満足のいくものができました。また、僕の作ったスクリプトは、いろんな人のめんどくさいを解消できるものだったので、みんなに使ってもらおうと思いました。**GUIを作ろう。**コンマ2秒の思いつき。
僕はかつてC言語でGUIをを実装しようと思って、あきらめているので、割と不安でしたが、Qiitaの皆様のおかげで、サクサク進みました。

##どうやらtkinterがいいらしい
知らんけど。kivyとかもやったけど、ちょっと複雑になるし、文献も少ないかな?
地味でよければtkinterで十分だし、応用が自分でもできる気がします。ファイルダイアログとか簡単に実装できます。そう思って、よくまとまったチュートリアルてきな記事を見ながら実装します。
***だがしかし、ボタンをみんなが言う通りに実装しても、うまく動いてくれません。***

##問題点
– ボタンを押すとGUIが止まる。(画面が応答しない)
– ボタンが見た目上、押しっぱなしになってしまう
– ボタ

元記事を表示

Atcoder ABC163 A-DをPython3で

今回は残念ながらUnratedでした

#A Circle Pond
円周の式に当てはめるだけ。円周率は3.14とかではなくmathのpi使いましょう。

“`ABC163a.py
import math

a=int(input())

print(math.pi*2*a)
“`

#B Homework
夏休みの日数-宿題の総日数の差を出力する。

“`ABC163b.py
n,m=map(int,input().split())
a=list(map(int,input().split()))
for i in a:
n-=i
if n<0: #宿題の総日数が夏休みの日数を上回った場合 print(-1) exit() print(n) ``` #C Management 上司1,2...nに対応する配列を用意し、$A_n$が指し示す上司を$+1$する。 配列が0から始まるのでそこだけ気を付ける。 ```ABC163c.py n=int(input()) l=list(map(int,input().split()))

元記事を表示

Pythonで要素数カウントする方法(辞書型)

#はじめに
今回の主なテーマは要素数をカウントしたいときに辞書型でカウントして格納する方法を書いていきたいと思います。自分がよく使うので復習の意味を込めています笑

AtCoder Beginner Contest 163のC問題でも活用できたので、おまけとして問題も解説していきます。

[AtCoder Beginner Contest 163](https://atcoder.jp/contests/abc163)

#C – management

まずは本題の問題の問題からみていきましょう。
要素数をカウントする問題だけみたい方はここだけ読んでください。

スクリーンショット 2020-04-20 0.07.31.png

問題の題意は数字が与えられてその数字が何回出現するかをカウントしたいというこ

元記事を表示

AtCoder用にローカルでコードテスト環境を作る(Python,jupyter)

AtCoderが重い時、サイト内のコードテストがなかなか終わらないので
ローカル環境でも実行できるように作成した。

## 方法
– 組み込み関数のinputを自作のinputに置き換えている。
– 複数行に対応するため、ipywidgetというモジュールを用いている。

## コード

“`python

# セル1(関数定義)
from ipywidgets import Textarea

def input():
global input_count
input_text = Input.split(‘\n’)[input_count]
input_count += 1

return input_text

def get_input(change):
global Input
Input=change[“new”]

textarea = Textarea()
textarea.observe(get_input, names=’value’)

# セル2(入力テキストボックス出力)
display(

元記事を表示

AtCoder Beginner Contest 163 参戦記

# AtCoder Beginner Contest 163 参戦記

ここ最近は上位20%近辺の常連だったが、今回は上位38.4%の位置ということで、unrated で良かった…….

## [ABC163A – Circle Pond](https://atcoder.jp/contests/abc163/tasks/abc163_a)

4分で突破. 書くだけだったけど、問題文が開始から2分以上見えなかったので時間がかかった. 円周の長さの公式くらい覚えてますよね?

“`python
from math import pi

R = int(input())

print(2 * pi * R)
“`

## [ABC163B – Homework](https://atcoder.jp/contests/abc163/tasks/abc163_b)

1分半で突破. 書くだけ. 宿題の所要日数を単純に合計して、夏休みの日数と比較するだけ.

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

元記事を表示

気象庁解析雨量(GRIB2形式)をNumpy配列としてPythonで扱う

## 解析雨量をPythonで読みたい

気象庁の提供する1kmメッシュ[解析雨量](http://www.jmbsc.or.jp/jp/offline/cd0100.html)(2006年~)はGRIB2形式をとっていますが、独自の拡張を含むため2020年4月現在GDALやpygribでは扱うことができません。解析雨量に対応しているwgrib2を使用してバイナリダンプしたりNetCDFへ変換して読む方法もありますが、数値のみを取り出すなら直接読めたほうが便利です。

以下では解析雨量のbinファイルに含まれる降水量をNumpyのndarray(南北3360x東西2560)として読み込む手順を解説します

## 解析雨量GRIB2ファイルの構成

データは全部で**8節**(第0節から第8節まで、うち第2節は省略)からなり、このうち第7節に降水量を表す整数のレベル値がランレングス圧縮で西から東向きに2560要素ずつ、北から格納されています。降水量はこのレベル値を第5節で定義される**データ代表値**(1km格子を代表する降水量の10倍値)とのルックアップテーブルに基づいて変換し、1/1

元記事を表示

djoserを使ったDjango REST FrameworkでのJWT認証機能の実装

# djoserとは

[djoser](https://djoser.readthedocs.io/en/latest/index.html)とはDjango REST Framework上での基本的なユーザー認証や登録などの認証周りをサポートしてくれるライブラリです。
カスタムモデルに対しても使え、Djangoのコードを再利用するような形をとるのではなく、Single Page Application(以下SPA)によりフィットするようなアーキテクチャを目指して作られています。

よりシンプルな認証の設定は[こちら](https://qiita.com/KueharX/items/eef29ae0c5c238cbf61c)で解説しています。

今回はdjoserでJWT(JSON Web Token)を使っての認証機能の実装について書きます。

ソースコードは[こちら](https://github.com/Kuehar/djoser_authentication)

また、以下の全てが導入後にエンドポイントとして使えます。

>/users/
/users/me/
/users/

元記事を表示

djoserを使ったDjango REST Frameworkでの認証機能の実装

# djoserとは

[djoser](https://djoser.readthedocs.io/en/latest/index.html)とはDjango REST Framework上での基本的なユーザー認証や登録などの認証周りをサポートしてくれるライブラリです。
カスタムモデルに対しても使え、Djangoのコードを再利用するような形をとるのではなく、Single Page Application(以下SPA)によりフィットするようなアーキテクチャを目指して作られています。

今回はdjoserの最もシンプルな認証機能の実装について書きます。
なお、この認証はセキュリティの面などから実際に使用するべきではなく、以下のJWT認証のようなより強固なセキュリティの設定があります。
あくまでお手軽な認証として紹介します。

JWT認証の設定は[こちら](https://qiita.com/KueharX/items/3568b27213cdbd1cf261)で解説しています。

[ソースコードはこちら](https://github.com/Kuehar/simple_djoser_a

元記事を表示

【第5回】pythonで某Authenticator的なツールを作ってみた

# 少し失敗している(ちゃんと動作しない)
– あえて失敗しているのも載せます。
– 今回は、メインの動作部分をきれいにしました。
– 上部のメニューから新規登録の部分を動作させるために改造してた。
– メニュー>閉じるはできるようになった。

“`python3
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk
import pyotp
import sqlite3
import os
import pyautogui
import sys

def create_table():
# データベースに接続する
conn = sqlite3.connect(‘gauth.db’)
c = conn.cursor()
# テーブルの作成
sql=”’CREATE TABLE gauth
(id integer primary key AUTOINCREMENT,
name text,
private_key text)”’

元記事を表示

【プログラマー新米の”言語処理100本ノック 2020″】第2章を解く【前半:10~15】

#はじめに
 ネットをさまよっている時にふと、”[言語処理100本ノック 2020](https://nlp100.github.io/ja/)”というサイトに出会いました。自然言語処理を触ってみたいなと思っていた反面、プログラミングは競プロを少しやったプログラマー新米。ちょっと興味もあるのでせっかくなので挑戦してみようと思います。
 この記事を書いている時点では全体の半分しか終わっていませんが、備忘録的な意味で書いて行こうと思います。心が折れたらやめます。先の記事がなかったら察してください。

#環境とスタンス
###環境
+ OS : macOS Catalina 10.15.3
+ Python : 3.7.6

###スタンス
+ 実装はあんまり頑張らない
+ 慣習とか知らない。
+ 安全性もそこまで考えない。
+ 他人が読めるように頑張る。
+ Python初心者にできるだけ優しくかきたい(願望)。

極力解説を書こうと思いますが、気になった方は調べることをお勧めします。

ここまで[前回](https://qiita.com/Uma_cryptids/items/c004a

元記事を表示

独学のプログラマーで出てくるらへんまとめ

■ Windows = Microsoftで使用がされてるOS
■ Unix = MacOSとかでも使用されてるいるやつ
■ Linux = オープンソースのOS (Unixライク)

対話シェル(書いてそのまま実行する) ⇆ テキストエディタ(ファイル的な)
高水準言語(例えばPython) ⇆ 低水準言語(例えばアセンブリ言語)

* range関数による繰り返し処理について

“`Python
# 0から任意の個数で数字を足し上げしていく場合に使う
# xを使わず、100回for文を回すという使われ方もします

for x in range(100):
print( “今” + str(x) + “回目の処理です” )

# 開始数字と終了数字を決めて1刻みで足し上げする場合
# 下の書き方で1から99(後ろはn-1)までをカウントします

for x in range(1,100):
print( “今” + str(x) + “回目の処理です” )

# さらに刻み(ステップ)を指定して、その刻みでカウントする
# 下記だと1から2刻みなので奇数が順番にカウントされ

元記事を表示

python multiprocessing の使い方(続3) Poolをメンバに持つclass で apply_async

### 目的

昨日からお勉強を続けていますが、ようやく使いたい形にまで近づけた気がするので、ここでまたメモしておきます。

– 非同期にくる入力に対して、処理を個別のプロセスでブロックすることなく動かしたい
– 終了をきちんととらえたい

ということを実現したかったです。昨日もメモを残しましたが、ここで一段落した感じです。

– [python multiprocessing の使い方](https://qiita.com/xtkd/items/d83f3ea025780dfd5035)
– [python multiprocessing の使い方(続) Pool編](https://qiita.com/xtkd/items/61f124cdc7979f4d63b2)
– [python multiprocessing の使い方(続3) Poolをメンバに持つclass で apply_async](https://qiita.com/xtkd/items/ff80f0e7a0a809837958)

### 仕様と実装方針

仕様としては

– 処理の入力を、パラメータを引数とする

元記事を表示

TkinterでGUIアプリを作る「テキストエディタ」

# はじめに
PythonのTkinterを使って「テキストエディタ」風のGUIアプリを作ります。
テキストウィジェット(Text Widget)と縦横スクロールバー(Scrollbar)を組み込んで再利用しやすいようにクラス(Class)にしました。

# 完成イメージ
シンプルな「テキストエディタ」風アプリです。
![editor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94910/dfa00fad-dd83-3258-e955-15436aa1b74a.gif)

# 解説
Pythonの標準GUIライブラリのTkinterとファイルダイアログ(filedialog)を使うため最初にインポート(import)します。

“`python
import tkinter as tk
from tkinter import filedialog
“`

スクロールバー付きのテキストフレームクラスを作成します。
クラスはフレーム(Frame)から派生させテキストと縦スクロールバーと横スクロールバ

元記事を表示

Djangoにおけるフォーム

# はじめに

ここでは、djangoにおけるフォームの設定の基本について解説します。

# forms.pyの追加

“`python:forms.py
from django import forms

from .models import SampleModel

class SampleForm(forms.ModelForm):

char_sample = forms.CharField(widget=forms.TextInput(attrs={‘size’: 300}))

class Meta:
model = SampleModel
fields = (‘char_sample’, ‘text_sample’)
“`

フォームのクラスを設定することで、モデルで設定したフォームにより細かな設定を行うことができます。
`Meta`クラスでは、対象とするモデルと、表示するフィールドを明記します。

# まとめ

ここでは、Djangoのフォームのクラスの設定について解説しました。
次回はビューについて取り上げる予

元記事を表示

爆笑問題の太田派?田中派?(画像認識入門)

#画像認識で爆笑問題を判別
コロナで暇だったのでサクッと作りました。
コードは欅坂46の画像認識した時の使い回しがほとんどです。
ディープラーニングで、好きなものを画像認識してみたい方は是非!
初めてでもできるように、つまずきそうな箇所も記載しています!!
[pythonの環境設定はこれだけでいけると思います!]
(https://prog-8.com/docs/python-env)
#ディレクトリ

“`
/bakusyomondai
 /data
  /TANAKA
  /ota
 /face
  /ota
  /TANAKA
 /train
  /ota
  /TANAKA
 /test
  /ota
  /TANAKA
 
 get_image.py
 detect_face/py
 devide_test_train.py
 inflation.py
 learn2.py
 Bakunin.py
“`
例えば、macの場合は下のようになってます。スクリーンショット 2020-04-19 16.16.27.png速攻python3で簡単メール送信

# python3でメール送信

## 環境
* モジュールは`smtplib`を使用します。
* SMTPはGメールを使用します。

## ソース
“`main.py
import smtplib
from email.mime.text import MIMEText

TO_ADDRESS = “送信先アドレス@gmail.com”
FROM_ADDRESS = “送信元アドレス@gmail.com”
MY_PASSWORD = “送信元アドレスのパスワード”

def send_mail(msg):
try:
smtpobj = smtplib.SMTP(‘smtp.gmail.com’, 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(FROM_ADDRESS, MY_PASSWORD)
smtpobj.sendmail(FROM_ADDRESS, TO_ADDRESS, msg.as

元記事を表示

Pythonでjsonファイルを読み込んで、整形して、json出力

この前、PowerShellでjsonファイルを読み込み、必要な整形を行いjson出力する方法をまとめましたが、Pythonでやってみたので、備忘録として残しておきたいと思います。

[前回のPowerShellで行ったコード](https://qiita.com/le_naoki/items/15460b12d89339713dc3)

まず読み込むjsonファイルです。

“`json:data.json
{
“prefectures”: [
{
“code”: “Tokyo”,
“name”: “東京”
},
{
“code”: “Osaka”,
“name”: “大阪”
},
{
“code”: “Aichi”,
“name”: “愛知”
},
{
“code”: “Fukuoka”,

元記事を表示

【Python】JOI 2007 本選 3 – 最古の遺跡(①高校数学ベクトル、②「in リスト」は激遅)【AtCoder】

[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](
https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)(@e869120さん)

こちらの7問目!
難しい!!!
頑張って理解できたので解説〜

#[JOI 2007 本選 3 – 最古の遺跡](https://atcoder.jp/contests/joi2007ho/tasks/joi2007ho_c)
先にACコードから↓

“`python:test.py
def I(): return int(input())
def TI(): return tuple(map(int,input

元記事を表示

【PyTorch】チュートリアル(日本語版 )④ 〜TRAINING A CLASSIFIER(画像分類)〜

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587891/9a7b365d-b844-9f98-664a-e698778d4746.png)
# 目的
PyTorchのチュートリアル[「What is PyTorch?」](https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor-tutorial-py)を参考にPyTorchで画像分類について学ぶ。

具体的には、

– ニューラルネットワークの構築
– lossの計算
– ネットワークの重みの更新
について学習する。

詳しい解説とコードは[【PyTorch】チュートリアル(日本語版 )④ 〜TRAINING A CLASSIFIER(画像分類)〜](https://www.aiprogrammers.net/entry/2020/04/18/152115)をご覧ください。

元記事を表示

OTHERカテゴリの最新記事