私は2つだけ小数点チェック入力の10進数
2 - コードがある場合は最初、私は誰もがそれを修正する方法を知っています負の数
を導入した場合の数を返しませんチェックする方法がわかりませんか?数が負のときに関数が自分自身を再帰的に呼び出しますが、isValid
の値がその呼び出しの後に常にfalseですので、ので、あなたのコードが負の数で動作しない理由がある
どうもありがとう
私は2つだけ小数点チェック入力の10進数
2 - コードがある場合は最初、私は誰もがそれを修正する方法を知っています負の数
を導入した場合の数を返しませんチェックする方法がわかりませんか?数が負のときに関数が自分自身を再帰的に呼び出しますが、isValid
の値がその呼び出しの後に常にfalseですので、ので、あなたのコードが負の数で動作しない理由がある
どうもありがとう
ループ反復。
実際にブール変数は必要ありません。
これで、小数点以下2桁の検出が問題になります。文字列レベルでそれを実行できるようにするには、浮動小数点数に変換した文字列を保持する必要があります。 s
として保存すると、len(s) > 3
やs [-3] == '。'などのテストを使って検証することができます。あなたはいつも `単一.`と2文字がピリオドの後に存在しているかどうかを確認するために、文字列をチェックすることができ
def getnumber():
while True:
try:
s = raw_input("Write a number:").replace(",",".")
number = float(s)
if number >= 0 and len(s) > 3 and s[-3] ==".":
return number
else:
print("Negative or not two decimal places")
except Exception:
print("Invalid number")
print(getnumber())
:
これは、あなたのようなソリューションを与えるだろう。 – nbryans
カンマを小数点に置き換える理由がわかりません。 – holdenweb
ダングそれで、なぜ多くの人がwhileループ**と再帰**を使って入力を得るのですか?関数内で 'getnumber()'の呼び出しを取り除き、#2を解決します。 –