Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python3勉強会資料 / Leaning Python3 for beginners

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Python3勉強会資料 / Leaning Python3 for beginners

身内向けPython勉強会の資料です.

Avatar for Ponpoyo

Ponpoyo

April 25, 2020
Tweet

Other Decks in Programming

Transcript

  1. おしながき # 1 入出力 input,print # 2 リスト # 3

    辞書 # 4 条件式,繰り返し if,for,while 3
  2. # 1 入出力 n = input() #普通の入力(string型) print(":n:", n) #文字囲みはダブルクオーテーションでもシングルでも良い

    n = input("入力 >> ") #入力 >> と出る #endでprintの最後を決めることができる(今回は改行なし) print("2つの整数を空白区切りで入力 >> ",end="") n, m = input().split() #空白区切り入力(タプル) print("n = " + str(n) + " , m = " + str(m)) #Javaみたいな書き方もできる print("3つの整数をカンマ区切りで入力",end=" >> ") #endに色々入れられる #mapメソッドを使ってintに変換 カンマ区切りで入力 n, m ,l= map(int, input().split(",")) print("n = %d, m = %d, l = %d"%(n,m,l)) #Cみたいな書き方もできる 4
  3. # 2 リスト リストの要素はこんな感じに取り出せる. l1 = ["1", "2", "3", "4",

    "5"] #1次元リスト print(l1[3]) #4 print(l1[-1]) #5 l2 = [["11", "12", "13"], ["21", "22", "23"]] #2次元リスト print(l2[0][2]) #13 print(l2[1]) #["21", "22", "23"] #もちろん3次元リストも可能(こんなの使いたくない) l3 = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] print(l3[1][0][1]) #6 6
  4. # 2 リスト リストの追加や結合や削除はこんな感じで. data1 = [1, 2, 3]; data2

    = [4, 5, 6] data3 = [[1, 2], [3, 4]]; data4 = [[5, 6], [7, 8]] #リスト同士の結合は+で繋ぐだけ print(data1 + data2) #[1, 2, 3, 4, 5, 6] print(data3 + data4) #[[1, 2], [3, 4], [5, 6], [7, 8]] print(data1 + data3) #[1, 2, 3, [1, 2], [3, 4] # リストの削除 data3.pop(0) #data3から0番目を抜き出す print(data3) #[[3, 4]] 7
  5. # 2 リスト indexを指定してデータを一度に取り出すこともできる. data = [1, 2, 3, 4]

    #要素番号の1番目と2番目を取り出す #data1[a:b] a番目からb-1番目を取り出す print(data[1:3]) #[2, 3] #省略できる print(data[:]) #[1, 2, 3, 4] #増分を指定できる #data1[はじめ:終わり:増分] #はじめから 終わりまで 2刻みで print(data[::2]) #[1, 3] 8
  6. # 2 リスト ちょっと問題 data1 = [1, 2, 3] data2

    = [4, 5, 6] この時,以下の問に答えよ. 問1: data1の末尾に 10 を追加せよ. 問2: data2の要素番号2番目に 11 を挿入せよ. 9
  7. # 2 リスト 問1解答 data1 = [1, 2, 3] #解1

    print(data1 + [10]) #[1, 2, 3, 10] #解2メソッドを用いたやり方 data1.append(10) #data1 = data1+[10] と同じ print(data1) #[1, 2, 3, 10] 10
  8. # 2 リスト 解2の補足 #data1を破壊したくない場合は data1 = [1, 2, 3]

    data1_2 = data1.copy() #コピーを作ることができる(*) data1_2.append(10) print("data1 ", data1) #data1 [1, 2, 3] print("data1_2 ", data1_2) #data1_2 [1, 2, 3, 10] 11
  9. =は代入? 発展 なぜcopyを使わなければいけないのか. (*)より data1_2 = data1 #これでは駄目なの? print("data1 ",

    data1) #data1 [1, 2, 3] print("data1_2 ", data1_2)#data1_2 [1, 2, 3] data1_2.pop(1) #代入したリストに変更を加える print("data1 ", data1) #data1 [1, 3] print("data1_2 ", data1_2) #data1_2 [1, 3] → data1_2しか変更をしていないのに,data1も書き換わってしまう!! 12
  10. =は代入? =での代入では, 名前が書き換わっただけの同じオブジェクトとみなされてしまう. data1_2 = data1 print("=代入 :", ("同じもの" if

    id(data1) == id(data1_2) else "違うもの")) #=代入 : 同じもの data1_2 = data1.copy() print("copy :", ("同じもの" if id(data1) == id(data1_2) else "違うもの")) #copy : 違うもの Pythonでは=はオブジェクトの名前の変更を表し,代入のことを"bind"と呼ぶ. 13
  11. # 2 リスト 問2解答 data2 = [4, 5, 6] #解1:ゴリ押し

    temp = data2[0:2] + [11] + data2[2:] print(temp) #[4, 5, 11, 6] #解2:メソッドを用いたやり方(こちらを推奨) #insert(index,object) index番目にobject(値とか)を入れる data2.insert(2, 11) print(data2) #[4, 5, 11, 6] 14
  12. # 3 辞書 16 キーを指定することで,バリューを一意に定めることができる. number = {"あんぱん": 2, "コロネ":

    3} #商品個数 price = {"あんぱん": 150, "コロネ": 200} #商品価格 ##あんぱんの個数が3個増えた(合計5個) number["あんぱん"] += 3 print("あんぱんの個数", number["あんぱん"]) ##ミニクロワッサン(価格:100)を10個新たに作った number["ミニクロワッサン"], price["ミニクロワッサン"] = 10, 100 print("個数: ",number)#個数: {'あんぱん': 5, 'コロネ': 3, 'ミニクロワッサン': 10} print("価格: ",price)#価格:{'あんぱん': 150, 'コロネ': 200, 'ミニクロワッサン': 100}
  13. # 4 条件式,繰り返し 17 Pythonにおける,if,else if, elseは次のように書く. :とインデントが大事. if や

    elif の条件が True であれば実行される. number = 1 if number == 1: # もしnumberが1ならば print("Number is %d.¥n" % (number)) elif number == 2: # もしnumberが1"でなく",2ならば print("Number is %d.¥n" % (number)) else: # もしnumberが1で"なく",2でも"ない"ならば print("Number is %d.¥n" % (number))
  14. # 4 条件式,繰り返し 19 a = 3; b = 23

    if a == b: print(a, "と", b, "は等しい") if a is not b: print(a, "は", b, "と等しくない") if a > b: print(a, "は", b, "より大きい") if a <= b: print(a, "は", b, "以下である") if str(a) in str(b): print(a, "が", b, "に含まれている")
  15. # 4 条件式,繰り返し 20 d1 = ["a", "b", "c"] d2

    = ["c", "d", "e"] if ("a" in d1) or ("a" in d2): # True or False => True print("どちらかに a が含まれている") if ("e" in d1) and ("e" in d2): # True and True => True print("どちらも e が含まれている") if not (("x" in d1) and ("x" in d2)): # not(False and False) => not(True) => False print("d1にxが含まれていないか,d2にxが含まれていない")
  16. # 4 条件式,繰り返し 22 range の基本 range(はじめ,おわり,増分) ⇔ はじめ から

    おわりまで 増分だけ増加 ran = list(range(2, 12, 2)) # [2, 4, 6, 8, 10] # 省略も可能 ran = list(range(5)) # [0, 1, 2, 3, 4] ※rangeはrange型,listにキャストする必要がある.(Python3)
  17. # 4 条件式,繰り返し 23 in の後にリストを置くと,xの中身がリストの要素になる. ls = ["a", "b",

    "c", "d", "e"] for x in ls: print(x, end=" ") # a b c d e ls = [["a", "b"], ["c", "d"]] #二重リストの場合 for x in ls: print(x, end=" ") # ['a', 'b'] ['c', 'd']
  18. # 4 条件式,繰り返し 内包表記について.(リストだけでなく,タプルとかでもできる) ls = [i for i in

    range(8)] # [0, 1, 2, 3, 4, 5, 6, 7] 上と下の結果は同じ ls = [] for i in range(8): ls += [i] # [0, 1, 2, 3, 4, 5, 6, 7] メリット:実行時間が早くなる.コードが簡潔. 24
  19. # 4 条件式,繰り返し 25 while文 ()が真ならば繰り返し. while(True): num = 0

    while(0 <= int(num) <= 10): num = input("0~10以外を入力したら終わるよ >> ") print("0~10を入力しなかったから終わったよ.") <実行結果> 0~10を入力したら終わるよ >> 0 0~10を入力したら終わるよ >> 5 0~10を入力したら終わるよ >> 8 0~10を入力したら終わるよ >> 10 0~10を入力したら終わるよ >> 3 0~10を入力したら終わるよ >> 11 0~10を入力しなかったから終わっ たよ
  20. 課題 その2 <2> 数当てゲームをつくる. ルール ・ 1~100までの整数を入力する.それ以外が入力された場合はもう一度入力を促す.(無効入力) ・ プレイヤーは予めランダムで決められた答えの数を予想する.答えを決めるのは実行始めの一度のみ. ・

    プレイヤーの入力後以下のいずれかを表示させる. 入力>答え の場合 high 入力<答え の場合 low 入力 が 答え±3以内 の場合 close 入力が答えの場合 just! ・出力が just!の場合は,改行後に,有効であったこれまでのプレイヤーの入力回答回数を表示して,そこでプ ログラムを終了させる. 27
  21. 課題 その2 実行例 ##数当てゲーム## 1~100までの整数を入力してください. >> 59 (入力) high 1~100までの整数を入力してください.

    >> 32 (入力) low 1~100までの整数を入力してください. >> 109 (入力) error!! 1~100までの整数を入力してください. >> 44 (入力) close 1~100までの整数を入力してください. (つづく) (つづき) >> -11 (入力) error!! 1~100までの整数を入力してください. >> 40 (入力) close 1~100までの整数を入力してください. >> 43 (入力) just! あなたは 5回目 で 答えにたどり着きました. (プログラム終了) (答えはランダムで決まるため, 必ずしも同じ結果になるというわけではない) 28