Python, elif вызвал проблему, а остальное - нет

мой код не показал ошибку, но он не показал того, что я ожидал. Это код для обозначения «X» на таблице 3x3. Вот код

насколько я считаю, можно просто использовать elif несколько раз вместо else

мой код не показал ошибку, но он не показал того, что я ожидал. Когда я только что изменил свой код на else, это сработало. Вроде я изменил соответствующий код для ввода "В3"


line1 = ["⬜️","️⬜️","️⬜️"]
line2 = ["⬜️","⬜️","️⬜️"]
line3 = ["⬜️️","⬜️️","⬜️️"]
map = [line1, line2, line3]
print("Hiding your treasure! X marks the spot.")
position = input() 


if position[0]= = "A":
  if position[1]==1:
    line1[0] = "X"
  elif position[1]==2:
    line2[0] = "X"
  elif position[1]==3:
    line3[0] = "X"

elif position[0]= = "B":
  if position[1]==1:
    line1[1] = "X"
  elif position[1]==2:
    line2[1] = "X"
  else:
    line3[1] = "X"

elif position[0]= = "C":
  if position[1]==1:
    line1[2] = "X"
  elif position[1]==2:
    line2[2] = "X"
  elif position[1]==3:
    line3[2] = "X"


print(f"{line1}\n{line2}\n{line3}")


Не используйте map для имени переменной, поскольку в Python он зарезервирован. Подробности смотрите help(map).

shantanoo 10.08.2024 10:57
Почему в 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
1
50
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Когда вы используете input(), он возвращает строку. Поэтому, когда вы сравниваете позицию[1] с целым числом, это не будет работать должным образом. Чтобы исправить это, вы можете преобразовать второй символ позиции в целое число, используя int(position[1]).

Обновленный код

line1 = ["⬜️", "⬜️", "⬜️"]
line2 = ["⬜️", "⬜️", "⬜️"]
line3 = ["⬜️", "⬜️", "⬜️"]
map = [line1, line2, line3]

print("Hiding your treasure! X marks the spot.")
position = input()

if position[0] == "A":
    if int(position[1]) == 1:
        line1[0] = "X"
    elif int(position[1]) == 2:
        line2[0] = "X"
    elif int(position[1]) == 3:
        line3[0] = "X"
elif position[0] == "B":
    if int(position[1]) == 1:
        line1[1] = "X"
    elif int(position[1]) == 2:
        line2[1] = "X"
    else:
        line3[1] = "X"
elif position[0] == "C":
    if int(position[1]) == 1:
        line1[2] = "X"
    elif int(position[1]) == 2:
        line2[2] = "X"
    elif int(position[1]) == 3:
        line3[2] = "X"

print(f"{line1}\n{line2}\n{line3}")

Я думаю, это сработает!

Это потому, что вы пытаетесь проверить равенство между строкой и целым числом. Он всегда дает False.

Вот исправленная версия вашего кода:

line1 = ["⬜️","️⬜️","️⬜️"]
line2 = ["⬜️","⬜️","️⬜️"]
line3 = ["⬜️️","⬜️️","⬜️️"]
map = [line1, line2, line3]
print("Hiding your treasure! X marks the spot.")
position = input() 

char = position[0]
num = int(position[1])

if char == "A":
  if num == 1: line1[0] = "X"
  elif num == 2: line2[0] = "X"
  elif num == 3: line3[0] = "X"

elif char == "B":
  if num == 1: line1[1] = "X"
  elif num == 2: line2[1] = "X"
  elif num == 3: line3[1] = "X"

elif char == "C":
  if num == 1: line1[2] = "X"
  elif num == 2: line2[2] = "X"
  elif num == 3: line3[2] = "X"


print(f"{line1}\n{line2}\n{line3}")
Ответ принят как подходящий

Проблема не в операторах if. Ввод сохраняется в виде строки. if postition[1] == 1 поэтому сравнивает строку с целым числом. Отрегулируйте переменные соответствующим образом, и все должно работать.

Вы можете сделать «position[1]» целым числом:

if int(position[1]) == 1:

или сравните «position[1]» со строкой:

if position[1] == "1":

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