2016-03-25 105 views
-1

我完成了我的胡扯節目!現在我似乎能夠很容易地打破它...您如何確保輸入的值是一個數字?

我將如何檢查一個值是一個int或浮動之前,我從字符串轉換它...我嘗試使用ValueError:但我想因爲函數不是一個循環的一部分我不能...第一次我需要考慮這個!

我的代碼的偉大工程,如果用戶實際遵循的方向(HA!),但將打破,如果我輸入類似「三化」,而不是3 代碼:

def parse_message(msg): 

    if len(msg) >= 1: 
     msg = msg.split(' ') 
     options = {'!resetme': command_reset_player, 
        '!removebets': command_remove_bets} 
     if msg[0] == '!bet': 
      if msg[1] == 'place': 
       if int(msg[2]) in [4, 5, 6, 8, 9, 10] : 
        if float(msg[3]) > 1: 
         UpdateBets.PlaceBet(sender, int(msg[2]), float(msg[3])) 
      if msg[1] == 'pass': 
       if float(msg[2]) > 1: 
        UpdateBets.PassBet(sender, float(msg[2])) 
      if msg[1] == 'passodds': 
       if float(msg[2]) > 1: 
        UpdateBets.PassOdds(sender, float(msg[2])) 
      if msg[1] == 'hard': 
       if int(msg[2]) in [4, 6, 8, 10] : 
        if float(msg[3]) > 1: 
         UpdateBets.HardBet(sender, int(msg[2]), float(msg[3])) 
+0

你爲什麼不定義一個函數如http://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-float-in-python – 7hibault

回答

0
try: 
    val = int(val) 
except ValueError: 
    print('Not an int') 
+0

嗯所以在每一個如果需要成爲一個int或float我用except語句運行循環....似乎它可能工作。 – HELPMEPLEASE

+0

實際上,對於str-> int轉換,您可能更適合使用'val.isdigit()'來測試字符串是否是數字 - 從性能的角度來看,它可能取決於您是否希望獲得大部分有效的字符串 – Alec

+0

'「-1」.isdigit()'被認爲是錯誤的,但是'int(「 - 1」)'是完全有效的,你發佈的方式是最好的,正如在各種答案中描述的那樣,這個問題是一個dup的。 –

相關問題