Pythonで少し複雑な処理を書いてみた。
昨日は役に立たないコードを書きました。
今回はもう少し応用?を効かせていこうと思います。
まずは以下のコードをご覧ください。
def perform_complex_calculation(data):
result = sum([i for i in data]) - sum([i for i in data])
return result
def manipulate_data_structure():
data = [i for i in range(100)]
data_reversed = data[::-1]
data_back_to_original = data_reversed[::-1]
assert data == data_back_to_original, "データが元に戻っていない!"
def pointless_recursion(limit, current=0):
if current < limit:
return pointless_recursion(limit, current+1)
else:
return current - limit
def main():
# 初期データ
initial_data = [i for i in range(50)]
# 複雑な計算を行う
calculation_result = perform_complex_calculation(initial_data)
# データ構造を操作
manipulate_data_structure()
# 無意味な再帰
recursion_result = pointless_recursion(10)
# 最終結果
final_result = calculation_result + recursion_result
print("結果")
if __name__ == "__main__":
main()
何をする処理か分かりましたか?
そうです。見た目には複雑そうなPythonコードですが、複数の関数を定義し、データ構造を操作して最終的には何の成果も得られないコードです。
解説つきでコードを書くと、
def perform_complex_calculation(data):
"""複雑な計算を行い、結果を返す(実際には何もしない)"""
result = sum([i for i in data]) - sum([i for i in data])
return result
def manipulate_data_structure():
"""データ構造を操作する(実際には何も成果を得ない)"""
data = [i for i in range(100)]
data_reversed = data[::-1]
data_back_to_original = data_reversed[::-1]
assert data == data_back_to_original, "データが元に戻っていない!(実際には戻っています)"
def pointless_recursion(limit, current=0):
"""意味のない再帰関数(最終的には何もしない)"""
if current < limit:
return pointless_recursion(limit, current+1)
else:
return current - limit
def main():
# 初期データ
initial_data = [i for i in range(50)]
# 複雑な計算を行う(結果は0)
calculation_result = perform_complex_calculation(initial_data)
# データ構造を操作(最終的には何も変わらない)
manipulate_data_structure()
# 無意味な再帰(結果は0)
recursion_result = pointless_recursion(10)
# 最終結果(使われない)
final_result = calculation_result + recursion_result
# 何もしない
print("このプログラムは結局何もしていません。")
if __name__ == "__main__":
main()
このコードは、次のように動作します。
perform_complex_calculation 関数はデータの合計から同じデータの合計を引いて、結局は 0 を返します。
manipulate_data_structure 関数はリストを逆順にした後、再度逆順にして元のリストに戻します。assert文で検証していますが、実際には常に真です。
pointless_recursion 関数は再帰を使用していますが、結局は引数 limit を自身から引いて 0 を返します。
main 関数ではこれらの関数を呼び出していますが、最終的には「このプログラムは結局何もしていません。」というメッセージを表示するだけです。
このコードは見た目にはいくつかの操作を行っているように見えますが、実際には有益な結果を何も生み出しません。
お役立たなければ幸いでございます。
この記事が気に入ったらサポートをしてみませんか?