教科書の List 12-2 の処理を乱数で試してみましょう.変数 a と b として -2 から 2 の範囲の整数を乱数により発生させて,ゼロで割るエラーを確認してみましょう.
Integer a: -1 Integer b: 0 a * b = 0 Division by zero Good job! |
Integer a: 1 Integer b: -2 a * b = -2 a / b = -0.5 Normal termination! Good job! |
解答例
以下のプログラムは実行するとエラーとなります.それを例外を用いて,不足する変数 b の値を適当に与えてとりあえず実行完了となるプログラムに変えてみましょう.
def pro(a, b): print(f'a * b = {a * b}') a = 2 pro(a, b) |
Traceback (most recent call last): File "error.py", line 6, in |
解答例
さきほどは変数 b に適当に値を入れて実行時エラーを回避しましたが,今回はこれまでこの授業では使用しないと言っていた input() を使用して,キーボードから値を入れて処理を完了するプログラムにしてみましょう.
b = 5 a * b = 10 |
解答例
提出された課題で時々見られるのがリストのインデックスに関するものです.例えば,以下のソースは実行するとエラーになります.エラーの種類を確認しましょう.
from random import randint as randi lst = [randi(10, 99) for _ in range(10)] print(lst[len(lst)]) |
前問のエラーを try 文を用いてエラーによる異常終了を回避して,とりあえず正常終了するようにしましょう.
Error concerning index occurred. Numobers: 47 74 85 38 78 62 32 96 63 42 Max index of above list: 9 Index you designated: 10 Good job! |
みなさんからの提出プログラムには他にも,SyntaxError や TypeError などがちょくちょくあります.以下のソースは TypeError の一例で 'list indices must be integers or slices, not list' と表示される例です.乱数をどれか一つランダムに表示させたいだけなのですが,リストの要素で指定しようとしてエラーになります.意味が分かりますでしょうか.
from random import randint as randi lst1 = [i for i in range(10)] print(*lst1) lst2 = [randi(10, 99) for _ in range(10)] print(*lst2) print(lst2[lst1]) |
簡単だと思いますので,エラーが出ないように変更してみてください.
他にも Python の初心者がよく出くわすエラーに TypeError: 'list' object is not callable というのもあります.以下のソースのエラーの原因はわかるでしょうか?
from random import randint as randi list = [randi(10, 99) for _ in range(10)] print(list(map(lambda n: 2 * n, list))) |
こちらも簡単だと思いますので,エラーが出ないように変更してみてください.