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

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

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

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

Python

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

Q&A

1回答

868閲覧

[python]このコードのどこが間違っていますか?

Ktorerere

総合スコア1

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/10/07 13:35

編集2020/10/07 13:46

入力した値の二乗根を出力し、数値以外を入力すると「ーは数値に変換できません」といったメッセージを出すコードを書いたつもりがうまくいきません。おそらくtry構文の箇所が間違っていると思います。どこが誤っているかご指摘願いたいです。

python

1x = float(input("数値を入力して下さい>>")) 2renew = x 3 4while True: 5 r1 = renew 6 r2 = x/r1 7 renew = (r1+r2)/2 8 print(renew) 9 diff = r1-r2 10 diff = abs(diff) 11 if diff <= 1.0E-6: 12 break 13 print(renew) 14 15 try: 16 x = float(input("数値を入力して下さい")) 17 except ValueError: 18 print(x,"は数値に変換できません") 19 continue 20 except: 21 print("予期せぬエラーです") 22 continue 23 24 print(renew)

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

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

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

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

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

meg_

2020/10/07 13:41

コードは「コードの挿入」で記入してください。
Ktorerere

2020/10/07 13:47

ご指摘ありがとうございます。修正致しました。
takutakuya

2020/10/07 13:50

try は使わずに、if文を使って、入力された値が数値ではない場合はエラーメッセージを出力するようにしてみてはいかがでしょうか? また、mathモジュールを使えば平方根を返すsqrt()関数が使えます。
Ktorerere

2020/10/07 13:58

回答ありがとうございます。if文を使えばできそうな気がします。やってみます。 tryを学習したばかりでそれを使おうと思ったのですが、やはりこの場合if文の方が適当なのでしょうか?
takutakuya

2020/10/07 14:04 編集

tryを使いたい場合はwhileの前の部分を下記にしてみてください。 ``` x = input("数値を入力して下さい>>") try: x_num = float(x) except ValueError as e: print(x, "は数値に変換できません") except: print("予期せぬエラーです") ```
Ktorerere

2020/10/07 14:29

本当にありがとうございます。 無事想定したコードを書くことができました。
guest

回答1

0

最初の行でいきなり float に変換しているので、
メッセージが表示されず例外が発生してプログラムの実行が終了します:

console

1$ python test.py 2数値を入力して下さい>>a 3Traceback (most recent call last): 4 File "/workspace/296561/test.py", line 1, in <module> 5 x = float(input("数値を入力して下さい>>")) 6ValueError: could not convert string to float: 'a'

実行終了前にメッセージを表示したい場合は、
ひとまず try 節を追加すると表示できます:

diff

1 2- x = float(input("数値を入力して下さい>>")) 3+ x_string = input("数値を入力して下さい") 4+ try: 5+ x = float(x_string) 6+ except ValueError as error: 7+ print(x_string,"は数値に変換できません") 8+ raise error 9renew = x 10 11while True: 12 r1 = renew 13 r2 = x/r1 14 renew = (r1+r2)/2 15 print(renew) 16 diff = r1-r2 17 diff = abs(diff) 18 if diff <= 1.0E-6: 19 break 20 print(renew) 21 22 try: 23 x = float(input("数値を入力して下さい")) 24 except ValueError: 25 print(x,"は数値に変換できません") 26 continue 27 except: 28 print("予期せぬエラーです") 29 continue 30 31 print(renew)

実行結果:

console

1$ python test.py 2数値を入力して下さいa 3a は数値に変換できません 4Traceback (most recent call last): 5 File "/workspace/296561/test.py", line 6, in <module> 6 raise error 7 File "/workspace/296561/test.py", line 3, in <module> 8 x = float(x_string) 9ValueError: could not convert string to float: 'a'

投稿2020/10/07 14:04

編集2020/10/07 15:07
y_shinoda

総合スコア3272

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問