2017-10-31 4 views
-1

내 prog의 if-else가 반복되지 않는다는 것을 발견했습니다. 왜 이런 일이 일어나고 어떻게 점검을 위해이를 고칠 수 있습니까?if-else가 루프를 실행하지 않는 이유

my prog는 사용자의 입력을 10에서 100 사이로 저장 한 다음 중복 된 입력을 삭제한다고 가정합니다. 예 : num=[11,11,22,33,44,55,66,77,88,99] 결과 :`[22,33,44,55,66,77,88,99]

inList=[]  
for x in range(1,11): 
    num = int(input("Please enter number "+str(x)+" [10 - 100]: ")) 

    if num >= 10 and num <= 100: 
     inList.append(num) 
    else: 
     num = int(input("Please enter a valid number: ")) 

print(inList) 

나는 경우 - 다른 사람이 한 번만했던 것을 발견, 그래서 유효하지 납입을 입력 할 때 두 번째로, prog은 여전히 ​​다음 입력 절차로 나를 데려옵니다. 어떤 일이 발생합니까?

Please enter number 1 [10 - 100]: 1
Please enter a valid number: 1
Please enter number 2 [10 - 100]:

또한, 나는 중복 납입에 대한 inList를 확인할 수있는 방법을 요청할 수 있습니다, 다음 목록에서의 num을 모두 제거?

+0

python을 편집 해 주셔서 감사합니다. – Mayble

+3

if 문이 * 루프가 아니기 때문에 * 루프가 아닙니다. 그것은 가지입니다. 'while' 루프를 사용하십시오. – chepner

+0

그래, 이전에 inList = []에 대한 내 prog에서 정의한 바 있지만, 포함하지 않았다. – Mayble

답변

1

필자는 파이썬 전문가가 아니며이를 테스트 할 수있는 환경 설정이 없지만 문제가 어디서 발생했는지 알 수 있습니다.

기본적으로, 내부는 당신의 루프에는 두 번째 프롬프트가 일어나고 거기에 아무것도

if num is valid then 
    add to array 
else 
    prompt user for num 

end loop 

말을하는거야, 그냥 프롬프트입니다> 말 루프. for 루프 내에서 num을 가져와 유효한지 확인하기 위해 다른 루프를 사용해야합니다. 다음 코드는 작동해야하는 부분에서 찌르기이지만 위와 같이 전문가와 테스트 환경이 아니므로 구문 오류가있을 수 있습니다.

for x in range(1,11): 
    i = int(0) 
    num = int(0) 

    while num < 10 or num > 100: 
     if i == 0: 
      num = int(input("Please enter number "+str(x)+" [10 - 100]: ")) 
     else: 
      num = int(input("Please enter a valid number: ")) 

     i += 1 

    inList.append(num) 

print(inList) 
+0

예, 그렇게하고 싶습니다. 도와 주셔서 대단히 감사합니다 ... – Mayble

2

나는 또한 while 루프를 제안합니다. 그러나 while 루프는 입력해야합니다 첫 번째 프롬프트는 erraneous 경우 :

이 예를 고려해 그러나

inList = [] 

for x in range(1,11): 
    num = int(input("Please enter number "+str(x)+" [10 - 100]: ")) 

    while not (num >= 10 and num <= 100): 
     num = int(input("Please enter a valid number [10 - 100]: ")) 

    inList.append(num) 

print(inList) 

을, 뭔가 다른 제안 할 수 있습니다 :

이 코드는 유효 입력의 목록을 만듭니다 [ "10", "11".... "100"] 기본적으로 문자열 인 입력이 목록에 없으면 새로운 입력을 요청합니다. 마지막으로 문자열의 int를 반환합니다. 이렇게하면 "ashashah"라고 입력해도 오류가 발생하지 않습니다. 사용해보기 :

inList = [] 

valid = list(map(str,range(10,101))) 

for x in range(1,11): 

    num = input("Please enter number {} [10 - 100]: ".format(x)) 

    while num not in valid: 
     num = input("Please enter a valid number [10 - 100]: ") 

    inList.append(int(num)) 

print(inList) 
+0

대단히 감사합니다! 그것은 작동합니다! 나는 모든 입력에 대해 int()를 사용해야한다고 생각했지만, 이제는 목록에서 수행 할 수 있습니다. – Mayble

+0

@Mayble은 만족 스러울 때 이것을 받아 들일 것을 고려합니다! 행운을 빌어 요. –

관련 문제