Python: сопоставление строки с элементом списка?

#python

#python

Вопрос:

 cords = []

for y in range(10):
    for x in range(10):
        cords.append((x, y))

print cords
print cords[11]

user_x=raw_input("X: ")
user_y=raw_input("Y: ")

xy = "(" user_x ", " user_y ")"
print xy


if xy in cords:
        print "Found Match"
  

Мой вопрос в том, почему он не выводит «Найденное совпадение», когда заданы 1 и 1 или любое другое совпадение?

Ответ №1:

Потому что строка никогда не будет равна кортежу.

 xy = (int(user_x), int(user_y))
  

Ответ №2:

Я не запускал код, но он выглядит так:

xy = «(» user_x «, » user_y «)»

является ли строка такой:

«(3, 2)»

Ваш список — это список кортежей.

Ответ №3:

Потому "(" user_x ", " user_y ")" что в результате получается строка, а ваш cords список содержит кортежи целых чисел.

Вместо построения строки вы должны просто поместить значения x и y в кортеж следующим образом:

xy = (user_x, user_y)

Или даже просто:

 if (user_x, user_y) in cords:
    print "Found Match"
  

Ответ №4:

Вау. Ну, здесь есть как минимум две проблемы, которые я вижу.

Во-первых, координаты являются целыми числами при их создании. raw_input возвращает строку.

Во-вторых, xy это строка, а координаты являются кортежами.

Ответ №5:

 >>> type(xy)
<type 'str'>
>>> type(cords[11])
<type 'tuple'>