3回目 メソッド(関数)とタプルを使った例です
はっきり言って超基礎ではない何か...
都市対抗トーナメントの実施内容
https://blog.goo.ne.jp/field_light/e/e951d5dee291c9779b17a398baa73477
作成に利用した データ100.txtとpythonのプログラム
googleコラボラトリーに公開
https://colab.research.google.com/drive/1Xbx0altWlVMUtjR6eGShvJk9BMNK7bSq
解説
1 乱数のライブラリ使う宣言
2 battle関数 2つの都市のデータからバトルさせ次のステージに上がる都市を返す
18 win関数 1つのバトル結果の表示と勝った都市を少し強くする
23 oneLine関数 各回戦の実施 teamに入った都市を順に戦わせる
nextTeamは免除されたチームが入っている(一回戦のみ使用)
27-33 cityに各都市のデータを入れる city[0]に入る
34 組み合わせ抽選会
36-38 一回戦免除の28チームを二回戦用データcity[1]に写す
39 一回戦だけ免除とかあるので別途実施
40-42 以後決勝まで同じように繰り返し、勝ったチームがcity[2],city[3]と移っていく
技の解説
2 def は関数宣言 battleにはc1とc2 2つの値から何かを計算する
3 c1変数にname,hp,apのタプルデータが入っているので分ける処理
6 random.randint(n1,n2) n1からn2の範囲にある適当な値を返す
11 return 関数から戻る 返す値があれば後ろに記述
この場合はwin関数を呼び出してそこから返ってきたものを返す
21 absは()内の数値の絶対値(-をとるだけ)を作成
21 intは数値の小数点をカットして整数にする
30 i.count(",") iの文字列にある","(カンマ)の数
31 n,hp,ap=i[:-1].split(",") iの文字列の改行コードを取ったものを
カンマでわけn hp apに入れる(数が合わないとエラーになる)
32 line+=[(n.replace(" City","Ku"),int(hp),int(float(ap)*10**9))]
nに" City"が入っていれば"Ku”に変換
hpは文字列の数値に整数に変換
apは文字列の数値を少数に変え、10の9乗をかけて最後に整数に変換
したものをタプル(n' ,hp' ,ap')にしてLine配列に追加
34 city[0]に入っている配列を適当に入れ替える
38 next+=[city[0].pop(0)]
city[0]の先頭を取って(削除) next配列に追加する
そしてこの後、私は気がついた誤字脱字を修正し続ける