質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

339閲覧

コラッツ数列のコードについて②

Kyohei

総合スコア23

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/10/01 13:03

環境:Mac OS,Python3系

前回の質問に用いたコードにご回答通り編集を加え、改良してそこからさらに、
「ユーザーが入力した文字列が整数出ない場合を判定するようにtry~except文を追加し、
通常、int('puppy')のようにint()関数に非整数の文字列を渡すと、ValueError例外が起きるので、
except節では、整数値を入力するように示すメッセージを表示させる」
上記のようになるようコードを下記のように打ち込みましたが、

def collatz(number): if number % 2 == 0: return int(number / 2) elif number % 2 == 1: return int(3 * number + 1) print('整数を入力してください。') try: number = int(input()) #シェルに表示される。 except ValueError: print('正しく整数を入力してください。') number = int(input()) while True: number = collatz(number) print(number) if number == 1: break

RUN結果は例えば最初に「2.3」と打ち、次に「3」打つと下記のようになります。

整数を入力してください。
2.3
正しく整数を入力してください。
3
10
5
16
8
4
2
1

しかし、2回連続整数を入力しないでやると下記のようになります。

整数を入力してください。
2.3
正しく整数を入力してください。
2,
Traceback (most recent call last):
File "/Users/kyohei/Desktop/311prooject2.py", line 10, in <module>
number = int(input()) #シェルに表示される。
ValueError: invalid literal for int() with base 10: '2.3'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/kyohei/Desktop/311prooject2.py", line 14, in <module>
number = int(input())
ValueError: invalid literal for int() with base 10: '2,'

☆整数を入力するまで何度も整数を正しく入力するように促し、かつ整数が入力されると通常運転する
コードをご教授くださいませ。

説明が下手で申し訳ありません。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

整数を入力するまで何度も整数を正しく入力するように促し、かつ整数が入力されると通常運転する

良くやるのは無限ループを使う方法ですね。

Python

1while True: 2 try: 3 number = int(input()) 4 except ValueError: 5 print('正しく整数を入力してください。') 6 continue 7 8 break

投稿2018/10/01 13:07

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kyohei

2018/10/02 01:22

LouiS0616樣ありがとうございます。 おかげさまで無限ループの使い方がだんだん分かるようになってきました。 breakして次の無限ループコードに移り、整数計算関数に入る、、、納得できました。 非常に助かりました。ありがとうございます!
guest

0

質問文のコードをベースに変更してみました。

python3

1def collatz(number): 2 if number % 2 == 0: 3 return int(number / 2) 4 else: 5 return int(3 * number + 1) 6 7while True: 8 print('整数を入力してください。(0なら終了)') 9 10 try: 11 number = int(input()) #シェルに表示される。 12 except ValueError: 13 print('正しく整数を入力してください。') 14 continue 15 16 if number == 0: 17 break 18 19 while True: 20 number = collatz(number) 21 print(number) 22 if number == 1: 23 break

python の入門書などで制御構文(while, for, break, continue) について勉強をしてみてください。

投稿2018/10/01 22:04

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kyohei

2018/10/02 01:19

katoy樣ありがとうございます。 continueの使い方を実感出来ました。 おっしゃる通りで制御文がまだまだ理解できていないようです。 勉強します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問