開発環境
- 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 コメント:
コメントを投稿