何も誇れぬ人生の記録

『ぼくは何も誇れないのが誇りだな』沼田真佑、影裏より

python

引数の受け渡しについて

一般に引数を使って関数に値を渡す場合、「値渡し」と「参照渡し」の2種類がある。 値渡しはコピーした値を渡す一方、参照渡しは格納されている場所を渡す。 Pythonでは後者の参照渡しが使われる。(プログラム言語ごとに違うので注意) 引数にイミュータブ…

問題解決法(ナップサック問題)

方法論: 貪欲法(値段の比率が高いものから埋める) 総当たり法(全部の組み合わせを調べる) 動的計画法(帰納的に、計算履歴を利用して解く) # 品物のリストを作る(namedtuple) from collections import namedtuple import random random.seed(7) Item =…

行列データの入力(演習用)

M x N 行列 M, N = map(int, input().split()) a = [list(map(int, input().split())) for i in range(M)]

matplotlib演習

csvファイルをdfで読み込む前に整形したらうまくいった。 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline def plot_tokyotemps(year, month): # 定数、入れ物、引数からの数を用意する df = pd.read_csv('samp…

エラー: csvがpandasでーDataFrameにうまくインポートされない

参った。

NumPyの復習

import numpy as np # 配列の持つ属性 a = np.array([[1, 2, 3], [4, 5, 6]]) print(a.dtype) print(a.shape) print(a.ndim) print(a.size) print(a.flat) print(a.T) """ int64 (2, 3) 2 6 <numpy.flatiter object at 0x423b700> [[1 4] [2 5] [3 6]] """ # 生成関数 print(np.arange(3)) print(</numpy.flatiter>…

ここまでで思ったこと(仮説)

pythonのデータ分析ツールを使って分析を行うために必要な技能は 1)データを整形する技術 2)データやファイルの管理の知識 3)各ライブラリ(numpy, pandas, matplotlib, scikit-learn)の知識 4)pythonの文法とコーディングの確かな知識 5)アルゴ…

pythonicなコーディング法

1)アンパックを使う 2)イテレータを使う 3)オブジェクトの真理値を使う 注: クラスのコンストラクタには()を付ける。例、object = class()

AtCoder10

# 1 # 解答1 a, b = map(int, input().split()) if a*b % 2 == 0: print('Even') else: print('odd') # 模範解答 a, b = map(int, input().split()) if a*b % 2: print('Odd') else: print('Even') # 2 # 解答1 s = input() print(sum([int(i) for i in s]…

PEP8

・トップクラスの関数やクラスの定義は二行開ける。クラス内のメソッドは一行開けて定義する。 """This is the example module. This module does stuff. """ from __future__ import barry_as_FLUFL __all__ = ['a', 'b', 'c'] __version__ = '0.1' __autho…

簡単な可視化とcsv演習

with open('tokyo-july-temps.csv', 'w', encoding='utf-8', newline='') as f: i = 0 dataWriter = csv.writer(f) for i in range(len(years)): dataWriter.writerow([years[i],july_temps[i]]) def csv_matrix(name): rows = [] with open(name, 'r') as f…

jason

・jsonファイルはpythonでは辞書dictとして読み込まれる。 { "book1":{ "title":"Python Beginners", "year": 2005 , "page": 399 }, "book2":{ "title": "Python Developers", "year": 2006 , "page": 650 } } import json #JSON ファイルの読み込み f = op…

あるひっかけ問題

sum = 0 for i in [1, 2, 3, 3, 4, 4]: sum += i if i > 3: break print(sum) # Out: 13

csv 演習

with open('tokyo-temps.csv', 'r', encoding='shift-jis') as f: dataReader = csv.reader(f) i = 0 year = 1875 years = [] july_temps = [] for row in dataReader: if i >= 48 and (i-48)%12 == 0: years.append(year) july_temps.append(row[1]) year =…

NumPy練習

''' 引数に整数 を取り、 iから始まる連番の整数からなる配列をi番目の行として持つ の2次元配列を返す関数 range_square_matrix() を、 arange() を用いて定義してください。 ''' # 解答 def arange_square_matrix(i): return np.array([np.arange(k, k + i…

内包表記 # 解答 def lengths(strings): return [len(x) for x in strings] # 解答 def nums(str1): return [int(x) for x in str1.split('.')] # 解答 def var(lst): length = len(lst) mean = sum(lst)/length lst2 = [(x - mean)**2 for x in lst] return…

クラスについて

# 継承 class HelloForEver: def readline(self): # 自分自身selfが必須 return 'Hello.\n' class HelloFile(HelloForEver): def __init__(self, n): self.n = n def readline(self): if self.n == 0: return '' self.n = self.n - 1 return super().readlin…

高階関数 関数も項とできる関数(2階述語論理) '''辞書 d が与えられたとき、 最大の値を持つキー(複数個ならばそのいずれか)を返す関数 max_value_key(d) を、 max を使って定義してください。 ''' # 解答 def max_value_key(d): return max(d, key=lambd…

モジュールの使い方 '''モジュール名を付けないでこれらの関数や変数を参照できるように変更してください。 ''' #解答1 from math import sqrt, sin print(sqrt(2)) #解答2 from math import * # _付きの関数以外はインポートされる print(sqrt(2)) モジ…

イテラブルとイテレータ イテラブルからイテレータが作られる。イテレータは反復で消費される。 '''文字列 name をファイル名とするファイルの最後の行を 文字列として返す関数 last_line(name) を、 ファイルオブジェクトに対するfor文を用いて定義してくだ…

ファイル入出力

def file_upper(infile, outfile): with open(infile, 'r') as inf, open(outfile, 'w') as outf: up = inf.read().upper() outf.write(up) with open('print-test.txt', 'w') as f: print('hello', 'world', file=f) file_upper('print-test.txt', 'print-t…

ループと else

for i in range(3): print(i) else: print('Done') # 上ではforの条件が偽になったときにelseが発動 for i in range(3): print(i) break else: print('Done') # 上ではループを途中でぬけるので発動しない for i in range(3): print(i) break print('Done') …

pythonでカレントディレクトリを取得 import os path = os.getcwd() print(path) # Out: C:\Users\hakun print(type(path)) # Out: <class 'str'> os.chdir('.\デスクトップ') path = os.getcwd() print(path) # Out: C:\Users\hakun\デスクトップ # この場合以下のどっち</class>…

listの扱い: 悪いコードと良いコード

悪いコード # Filter elements greater than 4 a = [3, 4, 5] b = [] for i in a: if i > 4: b.append(i) # Add three to all list members. a = [3, 4, 5] for i in range(len(a)): a[i] += 3 良いコード a = [3, 4, 5] b = [i for i in a if i > 4] # Or: …

再頻出の打ち間違い

(1) '=' と '-' の打ち間違い (2) '_' と '-' の打ち間違い (3) '*' と ':' の打ち間違い 全部ずっとアメリカ式のキーボードを使っていたことが原因。

# グローバル変数とローカル変数が関数内に共存するときのエラー greeting_global = 'Hello' def greeting(): print(greeting_global) greeting_global = 'Bonjour' print(greeting_global) greeting() # Global宣言(原則として利用しない) greeting_global …

# 問題 handle_collision def handle_collision(dic1, str1): index = len(str1) if index not in dic1: ls = [str1] dic1[index] = ls else: dic1[index].append(str1) return dic1 dic1 = {1: ['apple']} str1 = 'a' handle_collision(dic1, str1)

条件分岐の演習

def exception9(a): if a[0] == a[1]: for i in range(2, 9): if a[i] != a[0]: return a[i] elif a[0] == a[2]: return a[1] else: return a[0] exception9([1,2,1,1,1,1,1,1,1]) # 別解 def exception9(a): x = a[0] + a[1] + a[2] y = a[3] + a[4] + a[5]…

pythonプログラミング入門始めから2-2まで

1 演算子記号の**2を^2と、数学の書き込みではよくやるように書いてしまった。 また4/2*3=6と左から計算されるが、累乗の場合は4/2**3=4/8=0.5となり、右から計算される。ゆえに、2**2**3=256。 2 条件文中の真理値について。一般に空や0がFalseでその他はTr…