開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第I部(Pythonプログラミングの基礎)、3章(関数)、3.11(演習プロジェクト)、3.11.2(入力の妥当性検証)の解答を求めてみる。
コード
Python 3
#!/usr/bin/env python3
def collatz(number: int) -> None:
if number % 2 == 0:
return int(number / 2)
return 3 * number + 1
class CustomError(Exception):
pass
if __name__ == '__main__':
# n = int(input('整数を入力してください: '))
# while n != 1:
# print(n)
# n = collatz(n)
# print(n)
for n in [5, -5, 'puppy', -10, 10, 99, 100]:
print('-' * 10)
try:
n = int(n)
if n <= 0:
raise CustomError('ゼロ以下の数')
except ValueError as err:
print(type(err), err, '整数値を入力してください。')
except CustomError as err:
print(type(err), err, '正の整数を入力してください。')
except Exception as err:
print(type(err), err)
else:
print(f'n = {n}')
while n != 1:
print(f'{n:>3d}')
n = collatz(n)
print(f'{n:>3d}')
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
C:\Users\...> py -3 sample2.py ---------- n = 5 5 16 8 4 2 1 ---------- <class '__main__.CustomError'> ゼロ以下の数 正の整数を入力してください。 ---------- <class 'ValueError'> invalid literal for int() with base 10: 'puppy' 整数値を入力してください。 ---------- <class '__main__.CustomError'> ゼロ以下の数 正の整数を入力してください。 ---------- n = 10 10 5 16 8 4 2 1 ---------- n = 99 99 298 149 448 224 112 56 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 ---------- n = 100 100 50 25 76 38 19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 C:\Users\...>
0 コメント:
コメントを投稿