2017-04-12 41 views
-1

我的代碼:發現如果一個字符串沒有任何整數

user_input = input('>>>: ') 
if not re.search('[0-9]', user_input): 
    print('That wasn\'t an integer.') 
else: 
    print('That was an integer!') 
    print(user_input) 

它基本上嘗試確定用戶的輸入是(數學上的整數)或沒有。如果輸入是'adgx',這將起作用;代碼認識到這些不在0-9範圍內,並且打印的'那不是一個整數'。我需要程序打印'這不是一個整數。'如果輸入是例如'a3h1d',但它不是。我假設,因爲輸入技術上包含的數字在範圍內,它滿足了這個說法。我需要它,所以如果輸入是'a3h1d',程序打印出'那不是一個整數。'。

+0

你覺得呢're.search'呢? – njzk2

+0

'user_input.isdigit()' – Wright

+1

爲什麼不只是嘗試:int(user_input)',然後捕獲錯誤? – jonrsharpe

回答

0

您還可以使用re.match()加字符串開頭和字符串結束標記:

user_input = input('>>>: ') 
if not re.match('^[0-9]+$', user_input): 
    print('That wasn\'t an integer.') 
else: 
    print('That was an integer!') 

請記住,在正則表達式中:

  • ^匹配行的開始;
  • $匹配行的端部;
  • +表示,以前的模式應該出現一次或多次。

我建議看看Python official 're' documentation,以獲得更完整和更好解釋的列表。

+1

應該是'r'^ [0-9] + $'',否則它只匹配一個數字。 – jonrsharpe

+0

非常真實;我錯過了那個細節。 :P –

+0

你能解釋元字符和他們在做什麼嗎?我仍在學習正則表達式 – Anya

1

如果你不依賴於使用這樣的正則表達式的想法,我會簡單地使用str.isdigit

user_input = input('>>>: ') 
if not user_input.isdigit(): 
    print('That wasn\'t an integer.') 
else: 
    print('That was an integer!') 

還有這種方法建議

try: 
    user_input = int(input('>>>: ')) 
    print('That was an integer!') 
except ValueError: 
    print('That wasn\'t an integer.') 
+0

我不能嘗試,因爲雖然我知道我沒有包括它,但我現在編輯後,因爲它然後將'00000000'轉換爲'0'當我需要打印時 – Anya

相關問題