2

ユーザーからの非常に単純な入力を必要とするスクリプトを作成しています。これについて調査を行ったところ、最も安全な方法を見つけようとしてジレンマに陥っています。

私は整数だけが欲しいのですが、(私が思っていたのは)(メモリからこれを行う)に似た素敵なコードに出くわしました:

def getNumeric(prompt):
  while True:
    response = input(prompt)
    try:
      return int(response)
    except ValueError:
      print "please enter a number:",

これはほとんど機能しましたが、ユーザーが [enter] を押しただけでクラッシュしました。結局のところ、私は python < 3 を使用しており、著者はこれを 3+ 用に書いています。そのため、ニーズに合わせて 2.7 用に書き直す必要があります。しかし、プラットフォーム <3 および 3+ のいずれかに対応するには、どのように記述すればよいでしょうか?

私は他の人が使用できるものを書いており、できるだけ移植性を高めたいと考えています。気にする必要がありますか?

余談ですが、私は Raspberry Pi に対してこれを行っています。Python を 3 にアップグレードする必要がありますか、それともそのまま (2.7.3) のままにしておく必要がありますか?

4

2 に答える 2

5

私の提案は、Pi を Python 3 にアップグレードすることです。Python コードを 2 つの別々のバージョン用に開発しても意味がありません (関数を共有するだけでなく、より多くの予防策を講じるライブラリでない限り)。できるよ:

# Python 3.x
def getNumeric(prompt):
    while True:
        try:
            res = int(input(prompt))
            break
        except ValueError:
            print("Numbers only please!")
    return res

Python 2.7.x の場合は、raw_input()代わりに を使用しinput()ます。input()Python 2 では、指定された文字列を評価する (悪意のある可能性がある) ため、保存とは見なされません。

于 2013-07-20T10:05:23.990 に答える
0

試す:

def getNumeric(prompt):
  while True:
    response = input(prompt)
    try:
      if isinstance(response, int):
          return int(response)
      else:
          print "please enter a number:"
    except ValueError:
      print "please enter a number:"
于 2013-07-20T09:49:00.130 に答える