2013-03-07 77 views
0

這是我爲即將到來的AS計算初始代碼編輯的代碼。 這是作業,我堅持爲什麼它不起作用。有什麼建議麼?由於數據驗證 - Python 2.7

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

你是什麼意思的「不工作」? – 2013-03-07 15:30:57

+0

如果OP已經明確了症狀,他會發現實際的問題。 – Malvolio 2013-03-07 15:49:10

+0

你爲什麼問兩次? http://stackoverflow.com/questions/15275360/python-2-7-data-validation還是那個朋友? – 2013-03-07 15:49:34

回答

3

你應該只是做key = raw_input(...)而不是key = int(raw_input(...))

對於前者,key是一個字符串,直到你try使其成爲一個整數。對於後者,您試圖立即從中構建一個int,而不用防止任何異常處理的嘗試。


還有一些其他的邏輯缺陷。現在,你的無限while循環不會做任何事情,例如。 (無論如何,您在第一次傳球后都會返回)。移動return陳述,其中break可能*使它做你想做的事。此外,您不會對您構建的inti)做任何事情,但尚不清楚是否應該將其退回或key

*我正在假設你的程序應該在這裏做什麼...