Upload
woodpecker-shizuoka-univ
View
262
Download
0
Embed Size (px)
Citation preview
@yumechi0525
• 分岐の書き方– if文
• 繰り返しの書き方– while文– for文 # ちょっと特殊なので注意
• 標準入力の書き方– input()– 2系と3系で大きく動作が違うので注意
2015/12/14 2
• 分岐とは?(おさらい)– Aの時,Bって処理をする• 処理に柔軟性が生まれる! やれることの幅が非常に広がる!
• 分岐の実現には,if文,switch文などで実現される
2015/12/14 3
if 条件式:処理
• インデントがとても重要• 条件式のあとは”:”(コロンが必要)
2015/12/14 4
if 条件式:処理1
else:処理2
• ここもインデントと,”:”が重要
2015/12/14 5
• A > B : AはBより大きい• A >= B : AはB以上• A < B : AはBより小さい(AはB未満)• A <= B : AはB以下• A == B : AとBが等しい• A != B : AとBが等しくない
2015/12/14 6
• 計算結果が10以上の時に10以上! それ以外なら10以下と出力するプログラムを作ってみましょう
• ファイル名はiftest.pyで!
2015/12/14 7
i1 = 9i2 = 5i3 = i1+i2if i3 >= 10:
print("10以上です")else:
print("10未満です")
2015/12/14 8
2015/12/14 9
• C言語,Java言語でもありましたが,「かつ」「または」などによって,複数の条件式が設定できる(ブール演算子)
• ただし書き方に癖があるので,要注意
• if A > B or C > D:• 処理• みたいな…2015/12/14 10
• C言語,Java言語と大きく書き方が違うので注意!(Rubyとかっぽい)
• A > B and C > D– AがBより大きく,かつCがDより大きい時
• A > B or C > D– AがBより大きいまたはCがDより大きい時
• not A > B– AがBより大きくない時(AがB以下の時)
2015/12/14 11
• 計算結果が– 10以上20以下の時に「10以上!20以下!」–それ以外の時「10以上20以下でではないです」
• と出力するプログラムを作ってみましょう
• 先ほどのiftest.pyに書き加えましょう
2015/12/14 12
i1 = 9i2 = 5i3 = i1+i2
if i3 >= 10 and i3 <= 20:print("10以上20以下です")
else:print("それ以外です")
2015/12/14 13
2015/12/14 14
• 幾つかに分岐したい…• → if else 文を使う(実例↓)
# 前の分岐から処理される点に要注意if i3 >= 20:
print("20以上です")elif i3 <= 10:
print("10以上です")else:
print("それ以外です")2015/12/14 15
• 少し長かったかもしれませんが,次はループについてやっていきます
• ちょっと質問タイム(休憩)
2015/12/14 16
• while文を書く• C言語やJava言語と形が似ている
while 条件式:処理
ここでも,条件式と”:”が重要
2015/12/14 17
• looptest.pyというファイルを作ってください
2015/12/14 18
i = 0while i < 10:
print("iの値は%d" % i)i = i + 1# i += 1 でもOK, i++はだめ# pyhton2の場合,coding指定いる
2015/12/14 19
2015/12/14 20
• for文を使う• C言語,Java言語とは大きく書き方が違うので注意!• (Javaでいうfor-eachが基本)
for i in 任意のシーケンス型:処理
2015/12/14 21
for i in range(0, 10):print("iの値は%dですよん" % i)
2015/12/14 22
2015/12/14 23
• for文の形がなれない形だったと思います–つまりよく復習しておいて!><
• 繰り返し処理は分岐と同じくらい重要な操作!–何度も同じ処理を書く必要がない!
• 次は標準入出力
2015/12/14 24
• Python2とPython3で方法が異なります–同じメソッドでも持ってくる値の型が違うというクソトンデモ仕様
• 今回はPython3を前提に話を進めます
• inputtest.pyというファイルを作ってください
2015/12/14 25
word = input()print("入力された文字列は「%s」です" % word)
# 2行目が長すぎて折り返してますけど,# 実際は1行です><# 追記:フォントサイズ小さくしました
2015/12/14 26
• Pythonには型がないと言ったが…–実際には内部的に存在してる
• input()で受け取った値は文字列型(String型)として処理される
• そのため,次のような事が起こる
2015/12/14 27
i1 = input()i2 = input()print("i1+i2=%dです!" % (i1+i2))
2015/12/14 28
2015/12/14 29
ダメみたいですね・・・
i1 = input()i2 = input()print("i1+i2={0}です".format(i1+i2))
2015/12/14 30
2015/12/14 31
やっぱりダメみたいですね・・・
• キャストする– C言語やJava言語でも出てくるお話
i1 = int(input())i2 = int(input())print("i1+i2=%dです" % (i1+i2))
2015/12/14 32
2015/12/14 33
• 標準入力できるようになると,コンピュータに入力することで処理が変えられる(対話できる)
• 例えば,yes/noを入力することで操作を変更できる
• (競プロが始められる)2015/12/14 34
• メソッド–普通の書き方–ラムダ式を使う書き方
• リスト(配列みたいなもの)–だいたいC言語などのものと使い方一緒–課題出すかも
2015/12/14 35
• この辺の問題を試しに解いてください– ABC029 A - 複数形– http://abc029.contest.atcoder.jp/tasks/abc029_a
– ABC021 A - 足し算– http://abc021.contest.atcoder.jp/tasks/abc021_a
– ABC014 A -けんしょう先生のお菓子配り– http://abc014.contest.atcoder.jp/tasks/abc014_1
2015/12/14 36
• http://practice.contest.atcoder.jp/
• 見てやれば問題ないかと
• 練習問題はまだ教えてないことが,あるので解かなくていいです
• (空白区切りの入力を受け取る方法を教えていない)–余談に書いておきます
2015/12/14 37
• 実はpythonの数値処理には特殊な書き方がある
• if i3 >= 10 and i3 <= 20:• は• if 10 <= i3 <= 20:• のように書ける!(非常に直感的!)
2015/12/14 38
• 任意のシーケンス型?–リストまたは文字列– dictionaryとかもできる– range(10)っていうのは実はrange型を渡しているだけに過ぎない
–あと,指定がなければrangeは0から始まるのでrange(0, 10)はrange(10)とかける
2015/12/14 39
• 空白区切りの文字列の受け取り方• 入力例a b cだとすると• 数値ならば( 2通り)a, b, c = map(int, input().split())a, b, c = [int(i) for i in input().split()]
• 文字列ならばa, b, c = input().split()
2015/12/14 40
• 配列で受け取りたい場合は• 入力a, b, c として• 数値ならば(2通り)inplist = list(map(int, input().split()))inplist = [int(i) for i in input().split()]
• 文字列ならばinplist = input().split()
2015/12/14 41
• python2の標準入力の方法については時間があったら追記しときます
• input()だと数値でraw_input()だと文字列が返り値だったような–よく確認してないので,ドキュメント読んでください(すみません)
2015/12/14 42
• Python2だとCoding指定がいる?• 理由:Python2の文字列処理は1バイト単位でやっているため…(アスキーコード処理)– これは本当にひどい
• そのため,ファイルの一番頭にどのエンコードなのか指定するために次の記述が必要
• # # -*- coding: utf-8 -*-• Python3はデフォルトはUTF-8解釈だと思う• (よく確認してません)
2015/12/14 43
• Python入門 - 演算子– http://www.tohoho-web.com/python/operators.html
–前回の演算子も確認できます• 4. その他の制御フローツール —Python 3.4.3 ドキュメント (公式)– http://docs.python.jp/3.4/tutorial/controlflow.html
2015/12/14 44
• AtCoder– http://atcoder.jp/– http://practice.contest.atcoder.jp/– http://abc029.contest.atcoder.jp/tasks/abc029_a
– http://abc021.contest.atcoder.jp/tasks/abc021_a
– http://abc014.contest.atcoder.jp/tasks/abc014_1
2015/12/14 45
• Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法– http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/python/encoding.html
2015/12/14 46
• 全部ここ• https://gist.github.com/yumechi/ffc9b7005794f6fbaaac
2015/12/14 47