Как напечатать то, что выбирает пользователь?

black_v = []
red_v = []
green_v = []
yellow_v = []
blue_v = []
magenta_v = []
cyan_v = []
white_v = []
nums_8 = ['1', '2', '3', '4', '5', '6', '7', '8']

print("\n\u001b[31m\nEMEGENCY MEETING")

vote = input("\n\u001b[37mWho do you vote for?:\n[1] Black\n[2] Red\n[3] Green\n[4] Yellow\n[5] Blue\n[6] Magenta\n[7] Cyan\n[8] White\nEnter the number (1-8):>>> ")

while vote in nums_8:
    if vote == '1':
    black_v.append(1)
    break

Мой вопрос заключается в том, чтобы вместо того, чтобы делать «оператор if» для каждого числа, есть ли способ, которым я могу просто что-то записать, и если пользователь введет «1», программа добавит 1 к «black_v», и если он введет «3», , программа добавляет 1 к 'green_v'. Скажите мне, как это сделать в Python 3.x, а не 2.

Попробуйте использовать Make 2d list

SidPro 13.12.2020 07:07

Используйте словарь: {"black": [], "red": [], ... } и пусть они вводят имя вместо числа.

Barmar 13.12.2020 07:09

Ребята, подскажите тогда, как это сделать.

Abdullah Rajput 13.12.2020 07:09

хорошо, но как мне его завершить? @Бармар

Abdullah Rajput 13.12.2020 07:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
80
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

СДЕЛАЛИ НЕСКОЛЬКО ОБНОВЛЕНИЙ!

Вы можете попробовать это, когда вы можете поместить свой список в словарь Python, а его ключ - это числовое значение, введенное пользователем. Итак, что бы ни ввел пользователь, он получает список, соответствующий этому конкретному числу, а затем appends его. Извините, список не был хорошей идеей... Я знал, что что-то не так, и я думал, что это словарь.

Взгляните на пример вывода, где при вводе 2 он добавит входные данные в список red_v, поскольку это 2, поэтому в словаре ключ 2 со значением списка red_v будет append вводом пользователя.

black_v = []
red_v = []
green_v = []
yellow_v = []
blue_v = []
magenta_v = []
cyan_v = []
white_v = []

nums_8 = ['1', '2', '3', '4', '5', '6', '7', '8']

vs = {
1:black_v,
2:red_v,
3:green_v,
4:yellow_v,
5:blue_v,
6:magenta_v,
7:cyan_v,
8:white_v
}



print("\n\u001b[31m\nEMEGENCY MEETING")

vote = input("\n\u001b[37mWho do you vote for?:\n[1] Black\n[2] Red\n[3] Green\n[4] Yellow\n[5] Blue\n[6] Magenta\n[7] Cyan\n[8] White\nEnter the number (1-8):>>> ")


vs[int(vote)].append(vote)


print("Output in red_v list")
print(vs[2])




'''
while vote in nums_8:
    if vote == '1':
        black_v.append(1)
        break
'''

Выход:

[1] Black
[2] Red
[3] Green
[4] Yellow
[5] Blue
[6] Magenta
[7] Cyan
[8] White
Enter the number (1-8):>>> 2
Output in red_v list
['2']

Почему у вас list() в начале списка?

Barmar 13.12.2020 07:18

Вы проголосовали за черный, но он добавился к красному из-за +1

Barmar 13.12.2020 07:19

@StackOffended, когда я ввожу 2, я получаю «[]» в качестве ответа, используя ваш код. Почему?>

Abdullah Rajput 13.12.2020 07:20
Ответ принят как подходящий

Используйте словарь вместо отдельных переменных.

votes = {
    "black": [],
    "red": [],
    "green": [],
    "yellow": [],
    "blue": [],
    "magenta": [],
    "cyan": [],
    "white": []
}

print("\n\u001b[31m\nEMEGENCY MEETING")


while True:
    vote = input("\n\u001b[37mWho do you vote for? (black, red, green, yellow, blue, magenta, cyan, white) >>> ")
    if vote in votes:
        votes[vote].append(1)
        break
    else:
        Print("That's not a valid vote, try again")

Диктант должен соответствовать вводу. например: если пользователь вводит red, оператор if не будет работать. Вам не кажется?

Joe Ferndz 13.12.2020 07:30

@ Абдулла, пожалуйста, измени код Бармара на if vote+'_v' in votes: votes[vote+'_v'].append(1). Это позаботится о _v в словаре

Joe Ferndz 13.12.2020 07:56

Я забыл удалить все _v, я обновил его.

Barmar 13.12.2020 18:15

Я бы сделал это так. Избегайте «жесткого кодирования», когда это возможно. Таким образом, вы также можете добавить еще несколько значений в labels, и все будет работать как всегда (например, я добавил значение <skip>).

labels = ['Black', 'Red', 'Green', 'Yellow', 'Blue', 'Magenta', 'Cyan', 'White', '<skip>']
num_to_labels = { str(num + 1):label for num, label in enumerate(labels)}
num_to_votes =  { str(num + 1):0     for num, label in enumerate(labels)}

print('\n\u001b[31m\nEMERGENCY MEETING')
print('\n\u001b[37mWho do you vote for?:')
for num, label in num_to_labels:
    print(f'[{num}] {label}')

vote = input(f'Enter the number (1-{len(labels)}):>>> :')
while not vote in num_to_votes.keys():
    vote = input(f'Wrong number, repeat (1-{len(labels)}):>>> :')

num_to_votes[vote] += 1
colors = {"Black": [], "Red": [], "Green": [], "Yellow": [], "Blue": [], "Magenta": [], "Cyan": [], "White": []}

_map_of_colors = {num: color for num, color in enumerate(colors, start=1)}
# {1: 'Black', 2: 'Red', 3: 'Green', 4: 'Yellow', 5: 'Blue', 6: 'Magenta', 7: 'Cyan', 8: 'White'}

msg_colors_options = '\n'.join([f'[{key}] {color}' for key, color in _map_of_colors.items()])
# [1] Black
# [2] Red
# [3] Green
# [4] Yellow
# [5] Blue
# [6] Magenta
# [7] Cyan
# [8] White

# f-string only python3.6+
msg_input = f"""\u001b[31m
EMEGENCY MEETING
\u001b[37m
{msg_colors_options}
Enter the number (1-8):>>>"""
#
#
# EMEGENCY MEETING
#
# [1] Black
# [2] Red
# [3] Green
# [4] Yellow
# [5] Blue
# [6] Magenta
# [7] Cyan
# [8] White
# Enter the number (1-8) or 0 to exit:>>>

while True:
    option = input(msg_input)
    if not option.isalnum() or int(option) not in range(len(_map_of_colors)):
        input(f"\u001b[31mValue {option} isn't valid.\u001b[37m\nPress <ENTER> to continue.")
        continue
    # cast int
    option = int(option)

    if option == 0:
        # show values
        print("Values: ", colors)
        print("Goodbye!")
        break
    # get color name in map
    color_name = _map_of_colors[option]
    # get color array by name and append.
    colors[color_name].append(option)

Попробуй это

candidates = [['black_v', 0],['red_v', 0],['green_v', 0], ['yellow_v', 0], ['blue_v', 0], ['magenta_v',0], ['cyan_v',0], ['white_v', 0]]


 print("\n\u001b[31m\nEMEGENCY MEETING")

vote = input("\n\u001b[37mWho do you vote for?:\n[1] Black\n[2] Red\n[3] Green\n[4] 
Yellow\n[5] Blue\n[6] Magenta\n[7] Cyan\n[8] White\nEnter the number (1-8):>>> ")
candidates[int(vote) - 1][1] += 1

Вход

   EMEGENCY MEETING

   Who do you vote for?:
  [1] Black
  [2] Red
  [3] Green
  [4] Yellow
  [5] Blue
  [6] Magenta
  [7] Cyan
  [8] White
  Enter the number (1-8):>>> 1

Выход

  print(candidates)

[['black_v', 1], ['red_v', 0], ['green_v', 0], ['yellow_v', 0], ['blue_v', 0], ['magenta_v', 0], ['cyan_v', 0], ['white_v', 0]]

Другие вопросы по теме