千葉工業大学 上田 隆一
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
args
#!/usr/bin/python3 import sys #sysモジュールを読み込み print(sys.argv) #sysの「下の」argvに引数が入るのでprintしてみる
$ ./args 引数1 引数2 引数3 ['./args', '引数1', '引数2', '引数3'] #端末に打った通りにリストに入る
plus
plus_a
#!/usr/bin/python3 import sys print( float(sys.argv[1]) + float(sys.argv[2]) )
float
$ ./plus_a 1 2 3.0
plus_b
#!/usr/bin/python3 import sys x = 0.0 #xを定義して初期化 for n in sys.argv[1:]: #スライスを使う x += float(n) #+=で足し込む print(x)
print
$ ./plus_b 1 2 3 4 5 6 7 8 9 10 55.0
plus_c
#!/usr/bin/python3 import sys nums = [ float(e) for e in sys.argv[1:] ] #引数を浮動小数点数に変換してリスト作成 print(sum(nums)) #リストの和を返すsum関数を利用
if 条件1: #条件1が成り立つと、下の処理が実行される。elif以下の処理はスキップ。 処理 #処理はインデントのレベルをひとつ上げて記述 ・・・ elif 条件2: #条件1に合わない場合は条件2が調べられる。 処理 #(elifのブロックは省略や複数の記述が可能) ・・・ else: #ifやelifの条件に合わない場合に下の処理が実行される。 処理 ・・・
elif
IndentationError
x
x < 0.0
x == 0.0
x > 0.0
x >= 0.0
1 #!/usr/bin/python3 2 import sys 3 4 minus, zero, plus = 0, 0, 0 #こんなふうにまとめることが可能 5 6 for n in sys.argv[1:]: 7 x = float(n) 8 if x < 0.0: 9 minus += 1 10 elif x > 0.0: 11 plus += 1 12 else: 13 zero += 1 14 15 print("負:", minus) 16 print("0:", zero) 17 print("正:", plus)
$ ./plus_c 1 2 3 4 5 6 7 8 9 10 > ans #ansというファイルに出力を保存 $ cat ans #ansの中身の確認 55.0
sys.stdin
read_stdin
1 #!/usr/bin/python3 2 3 import sys 4 5 for line in sys.stdin: 6 word = line.strip() #最後に改行文字が入っているのでstripメソッドで除去 7 print(word + " を標準入力から読んだよ")
$ seq 5 > nums #seq: 1から指定された数字まで出力 $ cat nums #リダイレクトをつかってnumsというファイルを作成 1 2 ・・・ 5 $ ./read_stdin < nums 1 を標準入力から読んだよ 2 を標準入力から読んだよ 3 を標準入力から読んだよ 4 を標準入力から読んだよ 5 を標準入力から読んだよ
plus_stdin
#!/usr/bin/python3 import sys ans = 0.0 for line in sys.stdin: ans += float(line) print(ans)
$ ./plus_stdin < nums 55.0
nums
cat
$ cat nums 1 2 ・・・ $ cat nums #上矢印ボタンを押すと、直前に打った文字列cat numsを呼び出せる $ cat nums | ./plus_stdin # numsに続けて | ./plus_stdinと入力 25.0 $ seq 10 | ./plus_stdin #numsを作らなくても結局これでよい 25.0
|
$ echo 1 2 3 4 5 > yoko_nums $ cat yoko_nums | tr ' ' '\n' #trで空白を改行に 1 2 3 4 5 $ cat yoko_nums | tr ' ' '\n' | ./plus_stdin 15.0
tr
$ echo あ | ./plus_stdin > ans Traceback (most recent call last): #エラーはansに入らず画面に出てくる File "./plus_stdin", line 6, in <module> ans += float(line) ValueError: could not convert string to float: 'あ\n' #余談: エラーはちゃんと読みましょう
2>
>
<
seq