2014-11-11 5 views
0

는 기본적으로 내 프로그램을 수행 할 것입니다 : 목록/튜플에서 사용자 입력을 확인하는 방법은 무엇입니까?

new_ch = input("What channel would you like to switch to?") 
if new_ch in channels: 
     print("You're now on channel,", new_ch,".") 
else: 
     print("That's not a valid channel.") 

는 상관없이 내가 뭘, 그것은 "그것은 유효한 채널이 아니다"거짓 분기에 문을 인쇄 유지합니다. 내 프로그램에서 내 채널 목록/튜플에 사용자 입력을 검색하도록 할 수있는 방법이 있습니까? 내 채널 목록은 변수 이름으로 구성됩니다 (예 :

Ch1 = "Ch1 - Fox News" 
Ch2 = "Ch2 - PBS" 

Etc. 

channels = [Ch1, Ch2, Ch3, ... Ch10] 
+0

이 나를 위해 잘 작동합니다. 'Ch1'을 입력하면 "Ch1 - Fox News"로 전환됩니다. 이것은 당신이 기대하는 행동이 아닌가? – grovesNL

+0

그럴 것이라고 기대하지만, Ch1을 입력하면 허위 진술이 출력됩니다. 내가 뭘 잘못하고 있는지 모르겠다. – Bryana

+0

전체 예제를 순서대로 게시 할 수 있습니까? 그것은 나를 위해 잘 작동합니다. 당신이 제공 한 예제에서 어디에도'False'를 출력 할 필요가 없습니다. – grovesNL

답변

1

입력 입력이 "ch1"이고 출력이 "Ch1 - Fox News"로 예상되는 경우 if 문이 올바르지 않습니다.

당신이 [ '채널 1 - 폭스 뉴스', '채널 2 - PBS']에 "채널 1"비교되기 때문에 :

>>> channels = [Ch1, Ch2] 
>>> channels 
['Ch1 - Fox News', 'Ch2 - PBS'] 

그래서 당신은 여기, 사전을 사용할 필요가이 문제를 해결하려면 어떻게 :

Ch1 = "Ch1 - Fox News" 
Ch2 = "Ch2 - PBS" 
channels = {"CH1":Ch1,"CH2": Ch2} 
new_ch = input("What channel would you like to switch to?") 
What channel would you like to switch to?"ch1" 
if new_ch.upper() in channels: 
    print("You're now on channel,", channels[new_ch.upper()],".") 
else: 
    print("That's not a valid channel.") 


("You're now on channel,", 'Ch1 - Fox News', '.') 

위 함수는 대소 문자를 구별하지 않도록 설계되었습니다.

UPDATE


는 무작위하려면

elif choice == "2": 
    ch = random.choice(channels.keys()) 
    print("You're now on channel", channels[ch],".") 

채널의 목록을 인쇄하려면 :

elif choice == "1": 
    print("\n") 
    for item in channels: 
     print(channels[item]) 
+0

지시대로 노력했지만 여전히 내 허위 진술을 인쇄하고 있습니다. 또한 채널 목록을 인쇄하거나 임의 선택을 사용할 수 없기 때문에 별도의 목록을 만들어야했습니다. 목록과 관련이 있는지는 확실하지 않았습니다. – Bryana

+0

키에 대문자를 넣지 않았습니다. 이것은 완벽하게 작동했습니다! 고마워요! @ TheCreator232 – Bryana

+0

@ Bryana : 문제를 해결하려면 업데이트를 확인하십시오. 나중에 참조 용으로 파이썬 사전이 어떻게 작동하는지 알아보십시오. – TheCreator232

관련 문제