저는 파이썬에서 텍스트 기반 게임을 작업하고 있는데, 조건 집합에 따라 문자열을 다르게 포맷하려는 경우를 발견했습니다.
특히 방에있는 항목을 설명하는 텍스트를 표시하고 싶습니다. 문제의 항목 개체가 방 개체의 항목 목록에있는 경우에만 방 설명에 표시되기를 원합니다. 설정 방법은 조건에 따라 단순히 문자열을 연결하면 원하는대로 출력되지 않으며 각 경우에 다른 문자열을 사용하는 것이 좋습니다.
제 질문은 부울 조건의 결과를 기반으로 문자열을 형식화하는 파이썬적인 방법이 있습니까? for 루프 구조를 사용할 수 있지만 생성기 표현식과 비슷한 더 쉬운 것이 있는지 궁금합니다.
나는 이것과 비슷한 것을 문자열 형태로 찾고 있습니다.
num = [x for x in xrange(1,100) if x % 10 == 0]
내가 의미하는 바의 일반적인 예로서 :
print "At least, that's what %s told me." %("he" if gender == "male", else: "she")
이 예제가 유효한 Python이 아니라는 것을 알고 있지만 일반적으로 내가 찾고있는 것을 보여줍니다. 위와 유사한 부울 문자열 형식화에 유효한 표현식이 있는지 궁금합니다. 약간의 검색 결과 조건부 문자열 형식과 관련된 내용을 찾을 수 없었습니다. 일반적으로 형식 문자열에 대한 여러 게시물을 찾았지만 그게 제가 찾고있는 것이 아닙니다.
그런 것이 실제로 존재한다면 매우 유용 할 것입니다. 또한 제안 될 수있는 대체 방법도 열려 있습니다. 제공 할 수있는 도움에 미리 감사드립니다.
답변
코드는 사실 입니다 당신이 두 개의 문자, 쉼표와 콜론을 제거하면 파이썬 유효합니다.
>>> gender= "male"
>>> print "At least, that's what %s told me." %("he" if gender == "male" else "she")
At least, that's what he told me.
그러나 더 현대적인 스타일은 다음을 사용합니다 .format
.
>>> s = "At least, that's what {pronoun} told me.".format(pronoun="he" if gender == "male" else "she")
>>> s
"At least, that's what he told me."
형식에 대한 논쟁 dict
은 원하는 복잡성으로 구축 할 수 있습니다 .
답변
Python 3.6 이상에서는 다음 명령문 과 함께 형식이 지정된 문자열 리터럴 (f-strings : f"{2+2}"
producs 라고 함 "4"
)을 사용합니다 if
.
print(f"Shut the door{'s' if abs(num_doors) != 1 else ''}.")
백 슬래시 를 사용 하여 f- 문자열의 표현식 부분에서 따옴표를 이스케이프 할 수 없으므로 큰 따옴표 "
와 작은 '
따옴표 를 혼합해야 합니다. (여전히 f- 문자열의 바깥 부분에 백 슬래시를 사용할 수 있습니다. 예를 들어 f'{2}\n'
괜찮습니다)
답변
파이썬에는 다음 형식을 취하는 조건식이 있습니다.
A if condition else B
두 문자 만 생략하면 예제를 유효한 Python으로 쉽게 변환 할 수 있습니다.
print ("At least, that's what %s told me." %
("he" if gender == "male" else "she"))
내가 자주 선호하는 대안은 사전을 사용하는 것입니다.
pronouns = {"female": "she", "male": "he"}
print "At least, that's what %s told me." % pronouns[gender]