sleeplikelog
@sleeplikelog (夏輝 荒川)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

数値以外の値を入力した時にエラーを返すコードを書きたい

解決したいこと

はじめまして、pythonを勉強しているプログラミング初心者のものです。
京大の公開している演習テキストhttps://repository.kulib.kyoto-u.ac.jp/dspace/handle/2433/245698
に沿って演習を解いているのですが、平方根を求めるプログラムにおいて数字以外を入力すると"数値に変換できません”というメッセージを返すようにしたいです。

発生している問題・エラー

01.png

該当するソースコード

def get_positive_numeral(x):
    '正しい入力を得る'
    try:
        x == abs(float(eval(x)))
    except ValueError :
        print(x,"は数値に変換できません")
    except:
        print("予期していないエラーです")

どうぞよろしくお願いします。

1

2Answer

Comments

  1. @sleeplikelog

    Questioner

    早速ご回答いただきありがとうございます。解決しました。
    紹介いただいたリンクを読んで内容把握したいと思います。

解決したようですが、そもそも eval() を使う必要はありません(また使うべきではありません)。 x == abs(float(x)) で十分です。

eval() は文字列を Python のプログラムとして実行する関数です。ユーザーからの入力のような信頼できない文字列を実行することは意図しない動作に繋がります。

float() は文字列や整数を浮動小数点数に変換する関数です。入力が数値として解釈できなければ ValueError を送出します。

1Like

Comments

  1. @sleeplikelog

    Questioner

    追加のご説明ありがとうございます。
    それぞれの関数の意味を再確認したいと思います。

Your answer might help someone💌