#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'>