if文
if 条件式:
条件式が成立時の実行内容
条件に合えば実行する。
i = 3
if i > 1:
i = 0
print(i)
>>> 0
i = 3
if i > 4:
i = 0
print(i)
>>> 3
if ~ else文
if 条件式:
条件式が成立時の実行内容
else:
条件式が不成立時の実行内容
english_score = 60
score_passed = 80
if english_score >= score_passed:
result = "合格"
else:
result = "不合格"
result += "/" + "あと" + str(score_passed - english_score)
print(english_score)
print(result,"点")
>>> 60
不合格/あと20 点
english_score = 90
score_passed = 80
if english_score >= score_passed:
result = "合格"
else:
result = "不合格"
result += "/" + "あと" + str(score_passed - english_score)
print(english_score)
print(result,"点")
>>> 90
合格 点
上記は、以下のように簡略化して記述することも可能です。
english_score = 90
score_passed = 80
result = "合格" if english_score >= score_passed else "不合格"
result += "/" + "あと" + str(score_passed - english_score)
print(english_score)
print(result,"点")
>>> 90
合格/あと-10 点
if ~ elif ~ else文
if 条件式1:
条件式1が成立時の実行内容
elif 条件式2:
条件式1が不成立で、条件式2が成立時の実行内容
else:
条件式1と条件式2が不成立時の実行内容
from random import randint
point = randint(1, 30)
if point >= 30:
result = "松"
elif point >= 20:
result = "竹"
elif point >= 10:
result = "梅"
else:
result = "やり直し"
print(f"{point} / {result}")
>>> 21 / 竹
if文のネスティング
from random import randint
point = randint(10, 30)
score = randint(50, 100)
if point >= 20:
if score >= 70:
result = "合格"
else:
result = "不合格"
else:
result = "不合格"
print(f"{point} / {score} : {result}")
>>> 25 / 76 : 合格
上記は、論理演算子の「and」を使って書くことも出来ます。
from random import randint
point = randint(10, 30)
score = randint(50, 100)
if point >= 20 and score >= 70:
result = "合格"
else:
result = "不合格"
print(f"{point} / {score} : {result}")
>>> 25 / 76 : 合格
論理演算子の「or」で書くと条件のどちらか一方が成立した時に、”合格”になります。
from random import randint
point = randint(10, 30)
score = randint(50, 100)
if point >= 20 or score >= 70:
result = "合格"
else:
result = "不合格"
print(f"{point} / {score} : {result}")
>>> 17 / 88 : 合格
if not ~ 文
notで否定されるため、~ がFalseの時に条件が成立する。
Falseと見なされる値
・Flase
・None
・0
・( )、{ }、[ ]
#nameがFalseの時に”名無しのごんべ”が実行される
name = ""
if not name:
name = "名無しのごんべ"
print(name)
>>> 名無しのごんべ
#nameがFalseの時に”名無しのごんべ”が実行される
name = 0
if not name:
name = "名無しのごんべ"
print(name)
>>> 名無しのごんべ
#nameがFalseの時に”名無しのごんべ”が実行される
name = None
if not name:
name = "名無しのごんべ"
print(name)
>>> 名無しのごんべ
#nameがFalseの時に”名無しのごんべ”が実行される
name = ( )
if not name:
name = "名無しのごんべ"
print(name)
>>> 名無しのごんべ
if文の簡略化
from random import randint
point = randint(10, 30)
if 20 <= point <= 30:
print(point, "/ 合格")
else:
print(point, "/ 不合格")
>>> 26 / 合格
while文
条件に合えば実行を繰り返す。(処理を強制的に止める場合は、controlキー+Zキーを押す)
while 条件式:
条件式が成立時の実行内容
count = 0
while count <= 3:
print(count)
count += 1
>>>
0
1
2
3
from random import randint
kuji = 3
point = 0
#3桁右詰
fmt = "{:>3}"
# くじがなくなるまで繰り返す
while kuji > 0 :
score = randint(1, 10)
print(fmt.format(score))
point += score
kuji -= 1 # チケットを1枚減らす
print("ー" * 3)
print("計",format(point))
>>>
7
1
2
ーーー
計 10
break:無限ループを止める
from random import randint
# 値の合計が10になるまで無限ループ
while True :
a = randint(1, 5)
b = randint(1, 5)
c = randint(1, 5)
# 合計が11でbreak
if (a+b+c) == 11:
break
print(a, b, c)
>>> 4 3 4
from random import randint
#誤答数
miss = 0
# 正解数
correct = 0
print("【問題】3回間違える、もしくは、qで終了")
while miss < 3 :
a = randint(1, 5)
b = randint(5, 10)
ans = a + b
#出題文
question = f"{a}+{b}="
#キーボード入力を求める
value = input(question)
#qキーの入力でbreak
if value == "q":
break
#回答の採点
if value == str(ans) :
correct += 1
print("正解")
else :
miss += 1
print("誤答", "×" * miss)
print("ー" * 5)
print("正解:", correct)
print("誤答:", miss)
>>> 【問題】3回間違える、もしくは、qで終了
4+7=10
誤答 ×
2+5=7
正解
2+6=6
誤答 ××
2+7=8
誤答 ×××
ーーーーー
正解: 1
誤答: 3
continue:繰り返しをスキップ
from random import randint
# 空のリスト
numbers = []
# numbersが5個になるまで繰り返し
while len(numbers)<5 :
number = randint(0, 10)
if number in numbers :
# numberがnumbersに含まれていたらスキップ
continue
# numbersにnumberを追加
numbers.append(number)
print(numbers)
>>> [10, 8, 3, 9, 7]
while ~ else:繰り返した後で実行
while 条件式:
条件式が成立時の実行内容
else:
条件式が不成立時の実行内容
from random import randint
# 空のリスト
numbers = []
# numbersが5個になるまで繰り返し
while len(numbers)<5 :
number = randint(-5, 10)
if number < 0:
# numberがマイナス値でbreak
print("途中終了")
break
if number in numbers :
# numberがnumbersに含まれていたらスキップ
continue
# numbersにnumberを追加
numbers.append(number)
else:
print(numbers)
>>> 途中終了
from random import randint
# 空のリスト
numbers = []
# numbersが5個になるまで繰り返し
while len(numbers)<5 :
number = randint(-5, 10)
if number < 0:
# numberがマイナス値でbreak
print("途中終了")
break
if number in numbers :
# numberがnumbersに含まれていたらスキップ
continue
# numbersにnumberを追加
numbers.append(number)
else:
print(numbers)
>>> [7, 2, 5, 4, 10]
for文:処理を繰り返す
#リスト内の値を順に取り出す
numbers = [1, 3, 5, 7, 9]
for number in numbers:
print(number, end=", ")
>>> 1, 3, 5, 7, 9,
for i in range(開始値, 終了値, ステップ数):
実行内容
#指定回数繰り返す
for number in range(5):
print(number, end=", ")
>>> 0, 1, 2, 3, 4,
#開始値〜終了値まで繰り返す
for number in range(5, 10):
print(number, end=", ")
>>> 5, 6, 7, 8, 9,
#開始値〜終了値まで2つ飛ばしで繰り返す
for number in range(5, 10, 2):
print(number, end=", ")
>>> 5, 7, 9,
for文のネスティング
for i in range(3) :
print("for1 =", i)
for j in range(2) :
print(" ", "for2 =", j)
>>>
for1 = 0
for2 = 0
for2 = 1
for1 = 1
for2 = 0
for2 = 1
for1 = 2
for2 = 0
for2 = 1
break:繰り返しを中断
numbers = [0.0, 1, 3, 5, 7,"q", 12]
sum = 0
for number in numbers :
# numbersが数値ではない時にbreak
if not isinstance(number, (int, float)) :
print(number, "数値ではありません")
break
sum += number
print("number:",number, "/", "sum:",sum)
>>>
number: 0.0 / sum: 0.0
number: 1 / sum: 1.0
number: 3 / sum: 4.0
number: 5 / sum: 9.0
number: 7 / sum: 16.0
q 数値ではありません
for i in range(2) :
for j in range(3) :
if i < j :
print("break," * j)
break
print(f"i ={i}, j={j}")
>>>
i =0, j=0
break,
i =1, j=0
i =1, j=1
break,break,
continue:繰り返しをスキップ
numbers = [0.0, 1, 3, 5, 7,"q", 12]
sum = 0
for number in numbers :
# numbersが数値ではない時にbreak
if not isinstance(number, (int, float)) :
print(number, "数値ではありません")
continue
sum += number
print("number:",number, "/", "sum:",sum)
>>>
number: 0.0 / sum: 0.0
number: 1 / sum: 1.0
number: 3 / sum: 4.0
number: 5 / sum: 9.0
number: 7 / sum: 16.0
q 数値ではありません
number: 12 / sum: 28.0
for i in range(2) :
for j in range(3) :
if i < j :
print("break," * j)
continue
print(f"i ={i}, j={j}")
>>>
i =0, j=0
break,
break,break,
i =1, j=0
i =1, j=1
break,break,
for in ~ else:繰り返した後で実行
for 変数 in オブジェクト:
オブジェクトの値を全て取り出すまで実行内容
else:
オブジェクトの値を全て取り出せた時の実行内容
numbers = [0.0, 1, 3, 5, 7,"q", 12]
sum = 0
for number in numbers :
# numbersが数値ではない時にbreak
if not isinstance(number, (int, float)) :
print(number, "数値ではありません")
break
sum += number
else:
print("number:",number, "/", "sum:",sum)
>>> q 数値ではありません
try文:例外処理
例外処理:実行時に発生したエラーにより、プログラムが止まらないように対応するコード
try ~ except
try:
例外が発生する可能性がある処理
except:
例外が発生した場合の処理
while True :
num = input("8×6=?(qキーで終了)")
if num == "q":
print("わかりませんでした")
break
# 入力値を整数に変換できない場合例外処理
try :
result = int(num)
print("回答:", result)
except :
print("数値以外が入力されました。数値を入力してください。")
>>>
8×6=?(qキーで終了)しじゅうはち
数値以外が入力されました。数値を入力してください。
8×6=?(qキーで終了)48
回答: 48
8×6=?(qキーで終了)q
わかりませんでした
try ~ except ~ finally
try:
例外が発生する可能性がある処理
except:
例外が発生した場合の処理
finally:
tryの処理を抜ける前に実行する処理
num = 0
try :
value = 100 / num
print(value)
except :
print("Error")
finally :
print("終了")
>>>
Error
終了
try:
例外が発生する可能性がある処理
except (例外1, 例外2):
例外1、2が発生した場合の処理
except (例外3, 例外4):
例外3、4が発生した場合の処理
except:
例外1、2、3、4以外が発生した場合の処理
total = 12000
while True :
num = input("12000円を何人で割り勘しますか?(qキーで終了)")
if num == "q":
print("終了")
break
# 例外処理の振り分け
try :
price = round(total / int(num))
if price < 0 :
#マイナス値は無視
continue
print("1人当たりの金額", price)
except ValueError :
print("数値を入力してください。")
except ZeroDivisionError :
print("0以外の数値を入力してください。")
>>>
12000円を何人で割り勘しますか?(qキーで終了)4
1人当たりの金額 3000
12000円を何人で割り勘しますか?(qキーで終了)よん
数値を入力してください。
12000円を何人で割り勘しますか?(qキーで終了)0
0以外の数値を入力してください。
12000円を何人で割り勘しますか?(qキーで終了)q
終了
try ~ except as
try:
実行内容
except 例外1 as 名前1:
例外1が発生した場合の処理
except 例外2 as 名前2:
例外2が発生した場合の処理
total = 12000
while True :
num = input("12000円を何人で割り勘しますか?(qキーで終了)")
if num == "q":
print("終了")
break
# 例外を処理する
try :
price = round(total / int(num))
except Exception as error :
print("Error:",error)
else :
if price < 0 :
# マイナス値は無視
continue
print("1人当たりの金額", price,"円")
>>>
12000円を何人で割り勘しますか?(qキーで終了)4
1人当たりの金額 3000 円
12000円を何人で割り勘しますか?(qキーで終了)よん
Error: invalid literal for int() with base 10: 'よん'
12000円を何人で割り勘しますか?(qキーで終了)0
Error: division by zero
12000円を何人で割り勘しますか?(qキーで終了)q
終了