0

Python 2.7でのこのデータ検証の問題についてサポートが必要です。文字列を受け入れないようにしたいのですが、整数も受け入れません。

def GetKeyForCaesarCipher():
  while True:
    key =(raw_input('Enter the amount that shifts the plaintext alphabet to the ciphertext alphabet: '))
    try:
      i=int(key)
      break
    except ValueError:
      print ('Error, please enter an integer')

  return key
4

2 に答える 2

5

整数は問題なく受け入れられますが、元の文字列値を返しています。代わりに、戻るiか、に割り当てる必要があります。key

key = int(key)
于 2013-03-07T15:42:13.137 に答える
0

もちろん、Martijnの答えは正しいですが、スタイルを改善すると、デバッグが簡単になる場合があります。このようにしてみてください:

def promptForInteger(prompt):
  while True:
    try:
      return int(raw_input(prompt))
    except ValueError:
      print ('Error, please enter an integer')

def getKeyForCaesarCipher():
   return promptForInteger('Enter the amount that shifts the plaintext alphabet to the ciphertext alphabet: ')
于 2013-03-07T15:47:42.480 に答える