変数sは定義されていないのでエラーが出ています。
文字列は's'のように「'」で囲んで入力する必要があります。
https://www.atmarkit.co.jp/ait/articles/1904/16/news013.html#aboutstr
Like!
はじめまして、pythonを勉強しているプログラミング初心者のものです。
京大の公開している演習テキストhttps://repository.kulib.kyoto-u.ac.jp/dspace/handle/2433/245698
に沿って演習を解いているのですが、平方根を求めるプログラムにおいて数字以外を入力すると"数値に変換できません”というメッセージを返すようにしたいです。
def get_positive_numeral(x):
'正しい入力を得る'
try:
x == abs(float(eval(x)))
except ValueError :
print(x,"は数値に変換できません")
except:
print("予期していないエラーです")
どうぞよろしくお願いします。
変数sは定義されていないのでエラーが出ています。
文字列は's'のように「'」で囲んで入力する必要があります。
https://www.atmarkit.co.jp/ait/articles/1904/16/news013.html#aboutstr
@sleeplikelog
Questioner解決したようですが、そもそも eval()
を使う必要はありません(また使うべきではありません)。 x == abs(float(x))
で十分です。
eval()
は文字列を Python のプログラムとして実行する関数です。ユーザーからの入力のような信頼できない文字列を実行することは意図しない動作に繋がります。
float()
は文字列や整数を浮動小数点数に変換する関数です。入力が数値として解釈できなければ ValueError
を送出します。
@sleeplikelog
Questioner