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

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

【Python】文字列と数値(asciiコード)の変換まとめ

# はじめに
自分向けにPythonでの文字とasciiコードの計算方法をまとめました。
AtCoder上のPython3.4.3で動作確認済みです。

# 変換方法
`ord(‘文字’)` と `chr(数値)` で相互に変換できます。

“`python
s = ‘A’

ord_s = ord(s)
print(ord_s) # 65

chr_s = chr(ord_s)
print(chr_s) # A
“`

# 変換表
まとめとしてasciiコードと文字の対応表を記載します。
なお、以下の表の`asciiコード`という項目は10進数での表記を表しています。

## 重要な変換ピックアップ
|asciiコード|16進数|文字|
|:–:|:—-:|:-:|
| 48 | 0x30 | 0 |
| 57 | 0x39 | 9 |
| …| … |…|
| 65 | 0x41 | A |
| 90 | 0x5a | Z |
| …| … |…|
| 97 | 0x61 | a |
| 122 | 0x7a | z |

例えば、大文字と

元記事を表示

Reverse Number

#Python program to reverse a number
“`reverse.py
# coding: utf-8
# Your code here!
def reverseNumber(n):
reversedNumber = 0
while n > 0:
remainNumber = n % 10
reversedNumber = (reversedNumber * 10) + remainNumber
n //= 10
print(reversedNumber)

reverseNumber(123)
#->321
“`

元記事を表示

412. FizzBuzz

#Submission
“`submission.py
class Solution:
def fizzBuzz(self, n: int) -> List[str]:
ans = []
for nums in range(1, n + 1):
if nums % 15 == 0:
ans.append(“FizzBuzz”)
elif nums % 5 == 0:
ans.append(“Buzz”)
elif nums % 3 == 0:
ans.append(“Fizz”)
else:
ans.append(str(nums))
return ans
“`

元記事を表示

104. Maximum Depth of Binary Tree

#Description
Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Note: A leaf is a node with no children.

“`example.py
Given binary tree [3,9,20,null,null,15,7],

3
/ \
9 20
/ \
15 7
return its depth = 3.
“`
#Submission
“`submidssion.py
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left =

元記事を表示

617. Merged Two Binary Trees

#Description
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.

You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.

“`example.py

Example 1:

Input:
Tree 1 Tree 2
1

元記事を表示

COTOHA APIを使って数行で言語処理(形態素解析、感情分析)をする

# はじめに
[COTOHA Community Slack](https://api.ce-cotoha.com/contents/community.html)でCOTOHA APIのレスポンスを読みやすくするライブラリが紹介されていました (恐らく非公式)
今回は、そのライブラリを使って五行で形態素解析したいと思います。

# 事前準備
## 環境
Python 3.9.0
cotohappy 0.4.2

## インストール
ライブラリの名前は[cotohappy](https://pypi.org/project/cotohappy/)です。

インストールは簡単にpipでできます。
`pip install cotohappy`

>Python 3.7 and 3.8 are supported

とのことなので注意が必要です。

## 認証情報をおく
`Payload.json` に認証情報を記述して置いておくと、accesstokenも取得してくれます。
名前を指定すればPayloadじゃなくても大丈夫そうです。
参考: https://github.com/278

元記事を表示

Flask入門その3:webサーバー初心者がFlask+mod-wsgiをmac/ubuntuで動かすまで

# やりたかったこと(できたこと)
* flaskアプリケーションをwebサーバーで公開したい
* ローカルのmacで動作確認して、awsのec2(ubuntu)で公開

# 環境
* mac
* OS High Sierra 10.13.1
* Python 3.6.1
* Apache 2.4.41
* aws ec2 t2.micro
* Ubuntu 16.04.3 LTS
* Python 3.5.2
* Apache 2.4.18

# 事前知識
* Pythonは慣れてたけど、flaskは初めて
* バックエンドはほとんど知らない
* webサーバーとパソコンって何が違うんだっけ?レベル
* ローカルホスト、グローバルIP、プライベートIPとか良く分かんない

# 理解したこと(雰囲気)
※厳密ではないです

* Webサーバーって何ぞや?
* ブラウザのアドレスバーに自分のIPアドレスが打ち込まれたときに、Webページを返すやつ
* 他者からはグローバルIPで接続(LAN内ならプライ

元記事を表示

Janomeで形態素解析

#はじめに
qiita初投稿です。以前から自然言語処理に興味があって触ってみようと言う事で、自分の好きな歌手の曲の歌詞、人気top10とあまり人気のないtop10をスクレイピング→形態解析→頻度の抽出→グラフ化してどのような違いが出るのか見てみました。

##使用したサイト
Uta-Net
https://www.uta-net.com/

##スクレイピング
“`python
import requests
from bs4 import BeautifulSoup
from janome.tokenizer import Tokenizer
import collections

t = Tokenizer()

#指定したurlのhtmlから歌詞を抽出
r = requests.get(“歌詞ページのURL”)
soup = BeautifulSoup(r.content, “html.parser”)
kashi = soup.find(id = “kashi_area”).text

#名詞の出現頻度の抽出
kashi = collections.Counter(token

元記事を表示

pythonの関数オブジェクトの関数名を取得する

# やり方
“`
function.__name__ 
“`
で文字列を取得できる

“`python
print(print.__name__)
print(step_function.__name__)
print(type(step_function.__name__))

# 出力
# print
# step_function
#
“`
# 参考URL
https://docs.python.org/ja/3.6/library/inspect.html

# 便利な使い方
私は関数グラフの凡例を楽に表示させるために使いました

“` python
import numpy as np
import matplotlib.pyplot as plt

def step_function(x):
return (x > 0).astype(np.int)

def sigmoid_function(x):
return 1 / (1 + np.exp(-x))

def function_plotting(funcs)

元記事を表示

AtCoder Beginner Contest 146 参戦記

# AtCoder Beginner Contest 146 参戦記

## A – Can’t Wait for Holiday

2分半で突破. 書くだけ.

“`python
S = input()

if S == ‘SUN’:
print(7)
elif S == ‘MON’:
print(6)
elif S == ‘TUE’:
print(5)
elif S == ‘WED’:
print(4)
elif S == ‘THU’:
print(3)
elif S == ‘FRI’:
print(2)
elif S == ‘SAT’:
print(1)
“`

## B – ROT N

4分半で突破. 書くだけ.

“`python
N = int(input())
S = input()

print(”.join(chr((ord(c) – ord(‘A’) + N) % 26 + ord(‘A’)) for c in S))
“`

## C – Buy an Integer

16分で突破. 一目にぶた

元記事を表示

fibonacci数列の比較

#メモ化再帰
“`c++:fibonacci.cpp
#include
using namespace std;

int dp[100];

int fibonacci(int n)
{
if ( n == 0 || n == 1 )
{
return dp[n] = 1;
}
if ( dp[n] != -1 )
{
return dp[n];
}
return dp[n] = fibonacci(n – 1) + fibonacci(n – 2);
}

int main()
{
int n, i;
for (i = 0; i < 100; i++) { dp[i] = -1; } cin >> n;
n–;
cout << fibonacci(n) << endl; return 0; } ```  一度計算したfibonacci数列の値を配列の要素dp[n]に記録しておくことにより、再計算を回避する。  動的計画法を利用した実装。 #閉じた式 ```fibonacci

元記事を表示

Ubuntu18.04にPython3.8 + Pipenv環境を構築

# はじめに
Ubuntu18.04に環境構築したので、作業メモとして残します。
Python3.8のインストールにはpyenvを使用します。

### 環境
Ubuntu 18.04.3 LTS

# 手順

## 1.Git インストール
“`
$ sudo apt install git
“`

## 2.pyenv インストール

githubからpyenvをクローンする。

“`
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
“`

パスを環境変数に設定。
Ubuntuだと.bash_profileでなく.bashrcに記載する。
[参考]
https://github.com/pyenv/pyenv#basic-github-checkout

“`
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bashrc
$ echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bashrc
“`
シェル起動時にpy

元記事を表示

一定間隔処理でつまずいたので共有

※Python歴3ヶ月の新米です。
Windows10
python3.6.8を利用しています
#背景
一定間隔でネットから情報を取ってくる必要がありました。
初めにseleniumとchromedriverで情報採集する関数を作り、テストした結果正常に動きました。
次に[こちらの記事](https://qiita.com/tag1216/items/2dcb112f8018eb19a999)を見て、まさにこれだ!となったので関数を置き換えて実行しました。
ところが**Chromeが2つ開いて全ての動作が2回実行**されてしまっていました。
いやあ困った!

##注意書き

さて以下本題ですが、**自分はこうしたら直ったよと言うただの報告**です。詳しい人がいらっしゃいましたらコメント欄に解説お願いいたします。その際**強い言葉を使わないように**お願いします。怖いので。

#方法
**t.start()


t.run()**

に変更するだけです。

#結果
結果、2度実行されると言うことは防がれ上手いこと情報を引っ張ってこれています。めでたしめでたし。
たったこれだけの作業な

元記事を表示

OpenposeをAzureのUbuntu環境で使う

#目標
Ubuntu環境下でOpenposeを使えるように環境構築する

#環境
Ubuntu: 18.04
Python: 3.6.8

#まずはPythonで仮想環境の構築
“`
# python環境の確認
$ python3 -V
>> Python 3.6.8 → OK!

# pipの確認
$ pip -V
>> Command ‘pip’ not found → ないからインストール

# pipのインストール
$ apt-get install python3-pip
>> E: Unable to locate package python3-pip → apt-getのupdateが必要らしい

$ sudo apt-get update
$ apt-get install python3-pip
>> 無事インストール完了!

# 仮想環境の構築
$ apt-get install python3-venv
# 環境を構築する階層に移動
$ cd ***
$ sudo python3 -m venv .venv
$ source .venv/bin/activat

元記事を表示

[Python]unittestを使ったテストコードの書き方

#unittestによるテストコードの書き方
##そもそもテストコードが必要な理由
1.プログラムが洗練される
2.デグレを防ぐことができる
※デグレとはプログラムを修正したことで今まで正常に動作していた機能に不具合が生じるようになること

他にも理由はありますがざっくりとテストコードが必要な大まかな理由はこの2点です。

##ユニットテストの手順
・unittestをimportする
・unittest.TestCaseを継承してクラスを作成する
・関数名の頭はtest_にすることが慣例

下記サンプルコード

“`python:test.py
import unittest
class Test~(unittest.TestCase):
def test_~(self):
“`

##assert関数

assert関数はunittestにおいてよく利用される関数です。
種類がいくつかあるので状況に応じて使い分けます。

| 関数名 | |
|:—————–|——————|
| assertEqual

元記事を表示

Filmarksからのデータ抽出を目的としたウェブスクレイピングの勉強 #2

ホームページ:https://program-board.com

最終目標:Filmarksより年代別で高評価となっている映画一覧の作成を目的としたデータ抽出を行う.
本稿では,特定のページでの複数の項目についての情報を抽出する.抽出する映画はまだ1つです.

##ソースコードの確認

前回と同様に,抽出したい情報のソースコードを確認する.
本稿では,以下の情報を抽出します.

・映画タイトル
・上映日
・製作国
・上映時間
・ジャンル(3つまで)
・星(評価)
・監督
・脚本(2人まで)
・出演者(3人まで)

“`python
import requests
import bs4
import pandas as pd

# ウェブの情報を取得
url= ‘https://filmarks.com/list/trend’
res = requests.get(url)

# HTMLの整形
soup = bs4.BeautifulSoup(res.text) #features=’lxml’)
“`

##1作品のみの情報を抽出

とりあえず,表示画面の冒頭作品

元記事を表示

AtCoder DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選 参戦記

# AtCoder DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選 参戦記

## A – DDCC Finals

4分で突破. 書くだけ. ARC の A 問題ってこんなに簡単だっけ?

“`python
X, Y = map(int, input().split())

def f(n):
if n == 3:
return 100000
elif n == 2:
return 200000
elif n == 1:
return 300000
else:
return 0

result = f(X) + f(Y)
if X == 1 and Y == 1:
result += 400000
print(result)
“`

## B – Iron Bar Cutting

26分で突破. WA 1個.

切れ目の位置を p、棒の長さを l とすると、p が真ん中より左にある場合は、左にその長さの差である (l – p) –

元記事を表示

【備忘録】スレッド?並列処理?なんぞそれ?【勉強用】

もう二度と重たいプログラマにならないためのメモです。

[第1回 マルチスレッドはこんなときに使う ](https://www.atmarkit.co.jp/ait/articles/0503/12/news025.html)

を見て勉強しました。

#プロセスとスレッド#
まずここからちんぷんかんぷんだったので勉強していきます。

##まずは用語説明##

###プロセス###
プログラムの実行単位
実行中のexeファイルとか

###スレッド###
一連のプログラムの流れのこと

##プロセスとスレッドの関係##
プロセスの中にあるプログラムの流れがスレッドです。
なので、プロセスの中にスレッドが複数あっても大丈夫です。

ちなみに、プロセスの中に…
スレッドが*1つ*  → **シングルスレッド**
スレッドが*複数* → **マルチスレッド**
っていいます。

#どんなときにマルチスレッドを使うのか#
パフォーマンスを向上させたい時に使います。
遅いなぁとか重いなぁとかで困ったらマルチスレッドの出番かもしれません。

##パフォーマンスの向上##
パフォーマンスの向上

元記事を表示

Mecab(形態素解析)で遊んでみた!

# はじめに

MeCabを使う場面が出てきたので備忘録として投稿

MeCabのインストール方法から出力までをまとめてみた

お品書きは下記の通り

* MeCab(形態素解析)とは
* MeCabのインストール方法
* 実際に動かしてみた
* 出力フォーマットについて
* おわりに

# MeCab(形態素解析)とは

### MeCab
[MeCab][1]とは、京都大学情報学研究科によって開発されたオープンソース形態素解析エンジンのこと
perl, ruby, python, java, C# で使用できる

### 形態素解析
対象となる言語の文法や単語の品詞情報をもとに、文章を形態素に分解する解析
自然言語処理分野で事前処理として用いられる手法
※**形態素** … 意味をもつ表現要素の最小単位

例えば
「私はpythonを使用して、プログラミングを勉強しています。」
と入力すると、以下のように出力される

|単語|品詞|品詞細分類||単語|品詞|品詞細分類|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|私|名詞|代名詞||プログラミング|名詞|サ変接続

元記事を表示

Python+IFTTTを使ってWiMAXの高速通信の残量をLINEに通知する

# 動機
 筆者は、現在宅内のインターネット回線としてBIGLOBEのWiMAXを契約して使っています。ちなみに、端末は有線ポートも付いていて電波送受信が高性能なSpeedWi-FiHOMEL02(下図)です。
![P_20190709_221331_vHDR_Auto.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352068/62a831bc-c6e0-8c6d-fb24-a09af2e613ad.jpeg)
 WiMAXでは、直近3日間のデータ通信量が10GBを超えると速度制限される制約があります。そのため、その日パソコンを使い始める前に今どれくらい通信残量があるか把握したいと思い、通知システムを考えました。

# 動作
自宅のWindowsPCでログイン(またはスリープモードから復帰)すると、後述するPythonスクリプトが自動実行されてSpeedWi-FiHOMEL02がローカルに公開している管理ホームページ(下図)から今日までの通信量(図中の赤枠部分)を取得し、そこから今日使える通信量を算出

元記事を表示

OTHERカテゴリの最新記事