仕様?バグ?独学コンピューターサイエンティスト p105
以下は、独学コンピューターサイエンティスト 第1部 第5章 p105 の、最後の数字を探すサンプルプログラム(完成形)です。
s = "Buy 1 get 2 free"
nl = [c for c in s if c.isdigit()][-1]
print(nl)
このプログラムには、検出するリストに数字が含まれていないと IndexError: list index out of range で落ちるバグ?があるので、自分でプログラミングする際は、このルーチンを取り込まないようにしましょう。
以下が落ちるパターンのサンプルプログラムと、その実行結果です。
s = "Buy @ get @ free"
nl = [c for c in s if c.isdigit()][-1]
print(nl)
実行結果
Traceback (most recent call last):
File "/home/gundam/python/p105-3x.py", line 2, in <module>
nl = [c for c in s if c.isdigit()][-1]
IndexError: list index out of range
蛇足ですが、このバグ?を回避する一例を示しておきます。
s = "Buy @ get @ free"
nl = nl[-1] if (nl := [c for c in s if c.isdigit()]) else "None"
print(nl)
𝑷𝑺
清水川貴之さんからの見解をいただきました。
#日経BP
#独学コンピューターサイエンティスト
#独CS #selftaughtcoder
#清水川貴之 さん
#CoryAlthoff さん
#Python #Python3
#note
#バグ #bug