2017-03-26 5 views
4

파이썬에서는 'numbers'가 문자열에 있는지 확인하는 프로그램을 만들려고하는데 오류가있는 것 같습니다. 여기에 내 코드입니다 :다른 문자열에 문자열 목록이 있는지 확인하십시오.

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"으로 번호를 변경했습니다. 희망을 나는 대답을 얻을 수있다; 감사합니다 :) 내장 any() 기능

+2

알고 싶은 점은 무엇입니까? 모든 숫자가 목록에 있다면? 아니면 어떤 것들이 그 안에 들어 있습니까? – WNG

+1

문자열에 숫자가 있는지 알고 싶습니다. – jakethefake

답변

6

사용 :

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() 방법을 사용하여 숫자 인 경우 각 문자를 통해 반복하고 확인 할 수 있습니다, num_list 저장됩니다

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'하는 경우를 input_string의 모든 숫자 즉 ['1', '2', '3']len(num_list)>0True이됩니다.

관련 문제