2016-12-28 1 views
0

LPTHW로 파이썬을 배우고 있으며 연습 문제 36을 작성하려고합니다. 사용자가 특정 문자열을 입력하기를 원합니다. 10 가지 분야의 집합에서. 입력을 정의 된 목록과 비교할 수는 있지만 사용자를 단 5 개로 제한 할 수는 없습니다. 오히려 사용자를 5 개의 입력으로 제한 할 수는 있지만 둘 다를 수행 할 수는 없습니다. python - 사용자 입력을 목록과 비교하고 항목을 제한하여 새 목록에 추가합니다.

나는

discipline_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

가 그럼 난 빈리스트

your_disciplines = [] 

여기 discipline_list과 사용자 입력을 비교하고 새로운 사용자 입력을 추가하기위한 코드의 생성 분야의 목록 (원래 문자열-이름을 생성 빈 목록 (다른 대답의 코드)

while True: 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    found_d = False 
    for i in discipline_list: 
     if d == i: 
      found_d = True 

    if found_d: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 

for-loop를 사용하여 사용자 항목을 제한하지만이를 비교와 결합 할 수는 없습니다. 내 시도는 모두 5 회 이상 실행되었습니다.

for d in range(0, 5): 

도움이 되겠습니다. 당신이 while 루프를 사용하려면

답변

0

이 두 조건을 결합 while 루프 조건 당신이 그것을 simlify 5.

while len(your_disciplines) < 5: 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    if d not in your_disciplines: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 
+0

귀하의 코드가 유일한 출구로 your_disciplines의 길이를 확인하려면 정말 잘. 사용자 입력이 주 목록에 있는지 확인하고 항목이 새 사용자 목록에 없는지 확인하기위한 조건을 추가하기 만하면됩니다 (사용자가 올바른 입력을 반복 할 수 없기 때문에). 그것은 지금 아주 잘 작동합니다. 감사합니다. 'discipline_list에 d 개 있고 your_disciplines에 d가 없다면 : 'your_disciplines.append (d)' –

0

, 당신은 시도 할 수 있습니다 :

num = input("Enter your disciplines number >> ") # This is not required if you want to fix num to 5 
j = 0 

while j < int(num): 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    found_d = False 
    for i in discipline_list: 
     if d == i: 
      found_d = True 

    if found_d: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 
    j += 1 

일부 노트 :

대신 :

for i in discipline_list: 
    if d == i: 
     found_d = True 

당신은 할 수 있습니다 :

if d in discipline_list: 
    found_d = True 

또한 found_d 변수를 사용할 필요가 없습니다.

단순화 된 코드 수 :

num = input("Enter your disciplines number >> ") 
i = 0 

while i < int(num): 
    d = raw_input("enter your choice of discipline >> ") 
    d = str(d) 

    if d in discipline_list: 
     your_disciplines.append(d) 
    else: 
     print("Incorrect entry") 
    i += 1 
관련 문제