2017-05-16 1 views
0

좌표계와 같은 특정 조건에서 "X : s"또는 "-"중 하나를 인쇄하고 싶습니다.좌표 세트가 주어진 str 인쇄

을 감안할 때이 목록 :

my_list = [n for n in range(11)] 

coordinates = [3,5,7,8] 

의 주어진 요소가 coordinates에 한 다음 X 그 요소의 값의 인덱스 인쇄 할 것이다 my_list에 가정 해 봅시다; "-"는 그러한 일치가없는 장소에 인쇄됩니다. 다음

을 감안할 때 coordinatesmy_list이 일어날 것 : >>> ––X–X–XX

지금까지

for n in range(len(coordinates)): 
    if coordinates[n] in my_list: 
     print("–"*(coordinates[n]-(2**n)), end="") 
     print("X", end="") 

이를 달성하는 가장 좋은 방법은 무엇입니까 가지고 올 것을이?

+6

당신은 무엇 출력을 얻을 수 있습니까? 너의 문제는 무엇인가? 현재 여기에는 의문의 여지가 없습니다. –

답변

1

인쇄 할 문자열 (len(my_list))의 전체 길이를 살펴보고 각 색인에서 X 또는 -를 인쇄해야하는지 여부를 확인하는 것이 좋습니다. 그런 뭔가 :

for i in my_list: 
    if i+1 in coordinates: 
     print("X", end="") 
    else: 
     print("-", end="") 
print("") # go down a line 
1

이 시도,

In [42]: ''.join(['X' if i+1 in coordinates else '-' for i in my_list]) 
Out[42]: '--X-X-XX---' 

그리고는하지 않는다 my_list = [n for n in range(11)], range(11) 그것의 자기 요소의 목록, 목록 이해의 필요 없음을 제공합니다.

+0

나는 OPs의 원하는 출력과 일치하기 위해서는 '... i + 1 좌표에서 ...'여야한다고 생각합니다. –

+0

@ ChristianKönig 감사합니다, 업데이트 됨, –

1

직접 문자열로 genetator .join 사용할 수 있습니다 :

my_list = list(range(11)) 
coordinates = [3,5,7,8] 

strg = ''.join('X' if item in coordinates else '-' for item in my_list) 
print(strg) 
+0

'list (range (11))'는 필수 항목입니까? –

+1

@hiroprotagonist : nope. 그것을 시도하십시오 :'a = range (10); a : print (i); a : print (i)'에서. 이것은'range '가 반복자가 아니기 때문에 여러 번 작동합니다. –

+0

@ ChristianKönig 젠장! 당신 말이 맞아요! 고마워요 ...하지만 여전히 my_list라는 변수에 대한 목록 생성자를 선호합니다. –

관련 문제