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

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

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

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

Q&A

3回答

2491閲覧

Pythonの学習を行っているのですがエラーで実行できません。

dw44567

総合スコア0

Python

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

0グッド

0クリップ

投稿2021/02/17 06:30

前提・実現したいこと

https://repository.kulib.kyoto-u.ac.jp/dspace/handle/2433/245698
のVersion2020_02_13_01.pdfを使用して学習しています。
4.16 力試しで作成した下記プログラムが上手く動かないためどこがいけないのかご教示願います。

発生している問題・エラーメッセージ

7行目
エラーメッセージ
default 'except:' must be last.

該当のソースコード

python
ソースコード

while True:
x = input("正の数値を入力してください:")
try:
x = float(x)
except ValueError:
print(x, "は数値に変換できません")
continue
except:
print("予期していないエラーです")
exit()
except:
if(x <= 0):
print(x, "は0以下です")
continue
if(x <= 0):
print(x, "は正の数値ではありません")
continue

rnew = x diff = rnew - x/rnew if (diff < 0): diff = -diff while (diff > 1.0E-6): r1 = rnew r2 = x/r1 rnew = (r1 + r2)/2 print(r1,rnew,r2) diff = r1 - r2 if (diff < 0): diff = -diff continue

試したこと

exceptの箇所を移動させてみましたが状況は変わりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答3

0

pythonではインデントが意味を持ちます。
教材のソースをコピーすると、インデントが崩れて、画面と同じような形になっていないかもしれません。
そこで躓いているように思えます。

どのあたりの処理か分かりませんが、冒頭の無限ループのところの処理を整形すると下記のような感じになります。
このプログラムには、無限ループを抜け出す条件がありませんので、自分で止める必要があります。

python

1while True: 2 x = input("正の数値を入力してください ") 3 try: 4 x = float(x) 5 except ValueError: 6 print(x, "は数値に変換できません") 7 continue 8 except: 9 print("予期していないエラーです") 10 exit() 11 if (x <=0): 12 print(x, "は正の数値ではありません") 13 continue 14 print(x)

投稿2021/02/17 06:58

phoepsilonix

総合スコア233

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

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

0

質問する際は、<code>機能を使用してコードを書いてください。インデントが見やすくなります。

default 'except:' must be last.

例外名を省略したexcept節は最後の1回だけ使えます。2回つかっているので、エラーが出ていますね。
あと、try節の中にbreakを書いておかないと、無限ループになるかと。

投稿2021/02/17 06:58

jeanbiego

総合スコア3966

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

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

dw44567

2021/02/17 09:28

おっしゃる通りですね。break文までは考えてませんでした! ありがとうございます。
dw44567

2021/02/17 09:33

code機能なるものが用意されてるのですね。知りませんでした。 ありがとうございます。
guest

0

default 'except:' must be last.
は、except ***:ではないexcept:は最後の一つでしか書けないですという意味です。

except:
print("予期していないエラーです")
exit()
except:

の後のほうのexcept:は不要ですから消してください。

とりあえず、このエラーは消えるはずです。

平方根を求めたいようですね。
上記のエラーを修正して、もう少し自力で頑張ってみてください。

投稿2021/02/17 06:52

編集2021/02/17 06:57
ppaul

総合スコア24670

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

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

dw44567

2021/02/17 09:31

ありがとうございます。 例外処理の無いexceptは最後の一回しか使用できないのですね。。。 最後のexceptにかかる処理をtry文の外に移動して、無事実行できました。平方根の処理も問題ありませんでした。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問