2014-04-27 3 views
0

스팅 입력이 양의 정수인지 확인하는 작은 프로그램을 코딩했으며, 그렇다면 문자열의 특정 범위 내에 있는지 여부를 확인하는 작은 프로그램을 코딩했습니다. 여기 내 코드는 다음과 같습니다.문자열 입력이 범위 사이에 있는지 확인

def num_check(n:str): 
    if n.isdigit() == True: 
     if n in '1,2,3,4,5,6,7': 
     print('The integer lies between 1 and 7') 
     else: 
     print('Try again') 
    else: 
     print('Invalid input') 

하드 코딩 범위 (1,2,3,4,5,6,7)를 피할 수있는 방법이 있습니까?

답변

0

정수로 수를 변환, 그래서, False를 반환 할 경우는 1보다 작은 경우를 참조하십시오. 또는 내장형 range()을 사용하여 minmax 범위 내에 있는지 확인하십시오. range(7, 10)[7, 8, 9]을 반환합니다. 그렇다면 True을 반환하십시오. 그렇지 않은 경우 False을 반환하십시오.

def num_check(n, min, max): 
    n = int(n) 
    if n < 1: 
     return False 
    if n in range(min, max+1): 
     return True 
    return False 

이 같은 실행 :

>>> num_check('8', 9, 17) 
False 
>>> num_check('8', 3, 17) 
True 
>>> num_check('-1', 3, 17) 
False 
>>> num_check('-1', -5, 17) 
False 
>>> 
+0

이것들은 Ints가 아닌 String을 유지할 수있는 방법입니까? nm ... 나는 그것을 지금 본다. – user3233949

0

는 당신은 그것을 할 수 :

def num_check(n,min,max): 
    if n.isdigit() == True: 
     if int(n) in range(min,max+1): 
     print('The integer lies between {} and {}'.format(min, max)) 
     else: 
     print('Try again') 
    else: 
     print('Invalid input') 
+0

그 여전히 나에게 잘못된 결과를 제공합니다. num_check ('- 1', 1,6) 결과가 다시 표시됩니다. – user3233949

+0

@ user3233949, 예. -1은 1에서 6 사이가 아닙니다. – sshashank124

+0

num_check ('2', 1,6)은 잘못된 결과를 가졌습니다. – user3233949

관련 문제