2014-11-11 3 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.") 

Независимо от того, что я делаю, это не ведет печать заявления о ложной ветви «Это не действительный канал». Есть ли способ, которым моя программа может искать мой список каналов/кортеж со входом пользователя? Список моих каналов состоит из имен переменных ex.

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

Ok Если вход «ч1» и вы ожидаете, что выход будет «Ch1 - Fox News», то ваш, если утверждение неверно.

Потому что вы сравниваете "Ch1" в [ 'Ch1 - Fox News', 'Ch2 - PBS']:

>>> 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: Посмотрите на обновление, чтобы решить проблему. Для дальнейшего использования узнайте, как работает словарь python. – TheCreator232