2016-10-22 3 views
-7
s1 = request.args.get('s1', '') 
s2 = request.args.get('s2', '') 

    if '' not in [s1, s2]: 
     if s1 == s2: 
      if all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)): 
      msg = "first" 
      else: 
      msg += "second" 
     else: 
      msg = "thrid" 
     else: 
     msg = 'fourth' 

이 코드 조각을 "초"로 인쇄하고 싶습니다. python 문자열 비교 및 ​​ord() 비교?

나는 이러한 입력 S1 = "0.0"과 S2 = "0.00"

사람이 "if all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)):는"정확히 무엇을 의미하는지 간략하게 설명해 주시겠습니까 시도?

문자열상의 ord()를 비교하는 것뿐만 아니라 문자열 평등과 관련이 있으며 이들이 어떻게 다른지 알고 싶었습니다.

미리 도움을 청하십시오.

추신 : 들여 쓰기를 시도하십시오. 파이썬 초보자는 여기!

+2

과 같은 값을 반환합니다. [부정 수신 질문] (http://stackoverflow.com/questions/40198062/python-strings-equality- and-ord-comparison # 40198062) downvotes 및 비판을 닦으십시오. – TigerhawkT3

+1

평판이 3k 이상 있지만 여전히 코드에 들여 쓰기가 충분하지 않습니다. 지금 질문하는 법을 알고 있어야합니다. –

+0

@anonymous : 파이썬으로 프로그래밍하지 않았으므로 들여 쓰기를하십시오. 그 문제에 관해서는 필자도 내 질문에 언급했다. – Aditya

답변

0

인터 셉팅은 구현 세부 사항이므로 코드 조각을 두 번째로 만드는 확실한 방법은 없습니다.

CPython과는 [-5, 256] 범위의 정수를 인턴,

그래서 당신은 모든 ord(c1)이 같은 id이있는 경우가 ord 반환 무언가> 256

>>> s1 = "asdሴ" 
>>> s2 = "asdሴ" 
>>> s1 == s2 
True 
>>> all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)) 
False 

all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)) 검사를 통과 때하는 문자가 필요합니다 ord(c2). iddocumentation에서

:

반환 객체의 "정체성". 이것은이 객체가 수명 동안 유일하고 일정하다는 것을 보장하는 정수입니다. 수명이 중복되지 않는 두 객체는 ​​동일한 id() 값을 가질 수 있습니다.

CPython 구현 세부 정보 : 메모리에있는 개체의 주소입니다. 일반 영어

+0

질문은 스 니펫이 의미하는 바를 묻습니다. 특정 결과를 인쇄하는 방법이 아닙니다. – TigerhawkT3

-1

if all(ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)) 의미하는 모든 ord(s1[i])의 값 (ord(s1[i])ord(s2[i])위한 기준이 경우 c1c2) 모두 나열

대한 동일 0에서 len(s1 or s2) 범위 i위한 ord(s2[i])

zip() 문서를 확인하십시오. 문서 당 : i 번째 튜플 인수 시퀀스 또는 반복 가능 객체의 각각의 i 번째 원소를 함유 튜플들의 목록을 반환

지퍼().반환 리스트는 예를 들어 짧은 인수의 길이 시퀀스

길이가 절단되어

>>> l1 = [1, 2 ,3] 
>>> l2 = [7, 8, 9] 
>>> zip(l1, l2) 
[(1, 7), (2, 8), (3, 9)] 

지금 [ord(c1) is ord(c2) for c1, c2 in zip(s1, s2)]이 조건에 기초 True/False 값 터플리스트를 반환 ord(c1) is ord(c2)c1c2zip()에 의해 반환 된 튜플의 이전 목록에서 tuple 쌍입니다.

이제 마지막 부분입니다. 위의 all() 값이 True 인 경우 의 값이 True/False이면 모든 값은 True입니다. 단일 항목이 False 인 경우 all()False