2015-02-05 6 views
-1
def lists(): #Where list is stored 
    List = ["Movie_Name",[""],"Movie_Stars",[""],"Movie_Budget",[""]] 

    print ("Your Movies") 

    amount_in_list = int(input("How many Movies? ")) 
    x = 1 
    while x <= amount_in_list: 
     film = input ("Name of film ... ") 
     stars = input ("Main stars ...") 
     Budget = input ("Budget ...") 
     List.append["Movie_Name"](film) 
     List.append["Movie_Stars"](stars) 
     List.append["Movie_Budget"](Budget) 

lists() 

Movie_Name 등의 하위 설정 목록에 입력 한 영화를 어떻게 추가합니까?목록에있는 파이썬 목록 ("Stuck")

+3

'목록'이 아닌 '사전'을 사용해야합니다. – Matthias

+1

Movie라는 이름으로 클래스를 만드는 것이 훨씬 쉬울 것입니다. 그러면 목록에 영화 인스턴스를 저장할 수 있습니다 ... –

+0

어떻게해야합니까 @ kasperTaeymans –

답변

2

귀하의 질문에 직접 대답하는 답변보다 나은 답변은 다음과 같습니다. dict 당신은 단순히 사용하는 것이

def getMovies(): 

    movieinfo = {"Movie_Name": [], "Movie_Stars": [], "Movie_Budget": []} 
    print ("Your Movies") 
    amount_in_list = int(input("How many Movies? ")) 

    x = 1 
    while x <= amount_in_list: 
     film = input ("Name of film ... ") 
     stars = input ("Main stars ...") 
     budget = input ("Budget ...") 
     movieinfo["Movie_Name"].append(film) 
     movieinfo["Movie_Stars"].append(stars) 
     movieinfo["Movie_Budget"].append(budget) 
     x+=1 

    return movieInfo 

주의 사항 : 간단한 데모로

(프로그램이 사용자 정의 객체를 생성 원합니다 지점으로 개발하지 않는 한) 당신은 확실히이 상황에 대한 사전이 필요 key 문자열을 사용하여 해당 목록을 가져오고 (함수 시작 부분에서 초기화) 원하는대로 데이터를 추가합니다.

OP의 업데이트 된 요청에 대한 추가 정보를 제공하기 위해 편집 됨. 당신이 영화의 정보는 사용자가 주어진 단지 영화의 이름을 기준으로 찾으려면

, 당신은 이런 식으로 뭔가를 시도 할 수 :

film = 'The Matrix' # Assuming this is the user's input. 

Try: 
    # The index method will throw an exception if 
    # the movie cannot be found. If that happens, 
    # the 'except' clause will execute and print 
    # the relevant statement. 
    mIdx = movieinfo['Movie_Name'].index(film) 

    print '{0} stars {1} and had a reported budget of {2}'.format(
     film, movieInfo['Movie_Stars'][mIdx], movieInfo['Movie_Budget'][mIdx]) 

except ValueError: 
    print '{0} is not in the movie archives. Try another?'.format(film) 

출력 :

'The Matrix stars Keanu Reeves and had a reported budget of $80 million' 

또는 :

'The Matrix is not in the movie archives. Try another?' 
+0

어떻게 얻을 수 있는지 묻습니다. 사용자가 영화의 이름을 검색하고 모든 세부 정보를 얻을 수 있도록 해주세요. 인쇄를 시도했습니다 ("영화 이름 입력") searchData = input ("...") movieinfo의 searchData ("목록에 없음") 인쇄 ("목록에 있음") else : 인쇄 ("목록에 없음") Menu (movieinfo) –

+0

@ user3813197 내 대답이 업데이트되었습니다. 일반적인 아이디어가 효과가 있는지 확인하십시오. – Eithos

1

영화 정보를 개체에 저장합니다. 이렇게하면 코드를 쉽게 확장하고 변경하고 다시 사용할 수 있습니다. 사용자는 코드를 많이 변경하지 않고도 사용자 정의 물건을 수행하거나 속성을 추가 할 수 있도록 동영상 클래스에 메서드를 쉽게 추가 할 수 있습니다.

class Movie: 
     def __init__(self, name='', actors=[], rating=0 budget=0): 
      self.name=name 
      self.actors=actors 
      self.budget=budget 
      self.rating=rating 

     def setName(self, newname): 
      self.name=newname 

     def setActors(self, newstars): 
      self.actors=newstars 

     def setBudget(self, newbudget): 
      self.budget=newbudget 

     def setRating(self, newrating): 
      self.rating=newrating 

    # example 
    mymovies=[] 

    movie1= Movie('Interstellar',['actor1','actor2','actor3'], 5, 100000) 


    movie2=Movie() 
    movie2.setName('other movie') 
    movie2.setActors(['actor1','actor2','actor3']) 
    movie2.setBudget(10000) 

    mymovies.append(movie1) 
    mymovies.append(movie2) 
    # or append to your list in a loop 
+0

나는 그것을 좋아하지 만, 목록 내에서 목록을 사용해야한다. #School하지만, 좋은 방법 덕분에 나에게 코딩의 이런 식으로 보여줄 것이다. 나는 클래스 내에서 이것을 코드로 사용하고 changeBudget (self,)를 결코 사용하지 않을 것이다. 당신이 그것을 할 수 있음을 알았습니다. –

+0

대답을 수정했습니다 ... "별"과 혼동했습니다 –

+0

나는 배우를 두어야합니다. –

관련 문제