2017-03-26 256 views
4

在python中,我試圖創建一個程序,檢查'數字'是否在字符串中,但我似乎得到一個錯誤。這裏是我的代碼:檢查是否有任何字符串列表是在另一個字符串

numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] 

test = input() 

print(test) 
if numbers in test: 
    print("numbers") 

這裏是我的錯誤:

TypeError: 'in <string>' requires string as left operand, not list 

我試圖改變號碼爲numbers = "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"它基本上去除[]但是這也不能工作。希望我能得到答案;謝謝:)

+2

你想知道什麼?如果每個數字都在列表中?或者其中有哪些? – WNG

+1

我想知道是否有任何數字在字符串中。 – jakethefake

回答

6

使用內置any()功能:

numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] 
s = input() 

test = any(n in s for n in numbers) 
print(test) 
+0

這一個幫助最大,謝謝:) – jakethefake

+0

@jakethefake,不客氣 – RomanPerekhrest

2

簡而言之,你需要單獨檢查每個位。

有很多方法可以做到這一點:

例如,您這種使用循環(作爲一個練習)可以實現,或者通過使用組

if set(test) & set(numbers): 
    ... 

或通過利用str.isdigit

if any(map(str.isdigit, test)): 
    ... 

(請注意,這兩個示例假設您的數字測試,並且不容易推廣到任意的字符串。)

0

NPE說,你必須檢查每一個數字。我這樣做的方式是用一個簡單的for循環。

for i in numbers: 
    if i in test: 
     print ("test") 

希望這有助於:)

1

其他可能的途徑可能是通過每個字符迭代並檢查是否使用isnumeric()方法是數字:

input_string = input() 

# to get list of numbers 
num_list = [ch for ch in input_string if ch.isnumeric()] 
print (num_list) 

# can use to compare with length to see if it contains any number 
print(len(num_list)>0) 

如果input_string = 'abc123'然後,num_list將存儲input_string的所有數字,即['1', '2', '3']len(num_list)>0的結果爲True

相關問題