2014-02-26 2 views
1

사용자 프롬프트를 기반으로하는 0으로 구성된 목록을 생성하려고합니다. 그들이 하나를 입력하면 하나의 인덱스는 하나의 인덱스로 대체 될 것입니다. 두 개의 인덱스를 입력하면 하나의 인덱스로 교체 될 것입니다. 나는 임의의리스트를 생성 할 수 있습니다. 그러나 문제가 있습니다. 입력과 함께.
여기 내가 지금까지 무엇을 가지고 :인덱스 값을 기준으로 목록을 생성하는 방법

import random 

def askTheUser(): 
    number = input("Do you want to roll again? Pick a number or numbers thru 0 and 5:") 
    myList = [] 
    aList = [1,0] 
    for i in range(5): 
    myList.append(random.choice(aList)) 
    if number == 1: 
     return myList[1] = 0 
    if number == 2: 
     return myList[2] = 0 

return myList 




print(askTheUser()) 
+0

myList [1] = 0이 (가) 리턴되지 않습니다. 구문 오류가 있습니까? – Roberto

답변

1

난 당신이 0이 1로 교체 할 생각도 입력이 및 목록 인덱스가 0을 기반으로 캐스팅해야 할 그래서 int로하지 문자열을 취하고 올바른 코드 때문에 다음과 같아야합니다.

import random 

def askTheUser(): 
    number = input("Do you want to roll again? Pick a number or numbers thru 0 and 4:") 
    myList = [] 
    aList = [1,0] 
    for i in range(5): 
    myList.append(random.choice(aList)) 
    myList[int(number)] = 1 

    return myList 
print(askTheUser()) 
1

정확히 어떤 프로그램이해야하는지 잘 모르겠습니다. 나는 당신의 코드보다 더 많은 설명을 따르려고 노력했다. (예상되는 입력과 출력은 환영받을 것이다.)

from __future__ import print_function # make it work also in python 2.x 
import random 

def askTheUser(): 
    # don't use magic numbers, use 'constant-like' variables 
    MAX = 5 

    # try to avoid too long lines if possible 
    msg = "Do you want to roll again? " +\ 
     "Pick a number or numbers thru 0 and {}: ".format(MAX) 

    # you should use raw_input() for asking user, input() is very unsafe 
    number = raw_input(msg) 

    # initialize with random [0,1] 
    myList = [random.randint(0,1) for i in range(MAX)] 

    try: 
     # you need to convert string to int 
     i = int(number, 10) 

     # negative indexes can be valid ;o) 
     # let's not allow for that in this case, throwing error 
     if i < 0: 
      raise IndexError 
     myList[i] = 1 

    # you may expect ValueError if string was not valid integer 
    # or IndexError if it was beyond range (0, MAX) 
    except (IndexError, ValueError): 
     print ("That was wrong value:", number) # if you want, message user 
     pass 
    finally: 
     return myList 

if __name__ == '__main__': 
    print(askTheUser()) 

당신이 한 번에 여러 값을 허용 할 경우, 입력에 분할()를 사용하여 루프를 처리해야합니다 다음은 내 작품이다. 행운을 비네.

관련 문제