мой код не показал ошибку, но он не показал того, что я ожидал. Это код для обозначения «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}")
Когда вы используете 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":
Не используйте
map
для имени переменной, поскольку в Python он зарезервирован. Подробности смотритеhelp(map)
.