2012-06-22 3 views
-1

입력하세요 문자열 : 파이썬과 펄 프로그래밍하는 언어 분할 문장

Python 
Perl 
and 
are 
programming 
languages 

내가 입력 분할 할 수 있지만, 대문자 단어 위에 이동합니다. 두 가지 목록을 사용하려고 생각합니다. 하나는 제목의 단어와 하나는 낮은 단어입니다. if 문을 사용하여 단어를 특정 목록에 배치하려고합니다. 제발 몇 가지 아이디어를 제안하십시오!

감사

+1

일부 코드를 표시하십시오 ... – avasal

+0

질문이 명확하지 않습니다. – Fivesheep

+3

귀하의 숙제입니까? –

답변

4

이 같이 때문에 귀하의 예를 출력, 잘못 : e 먼저 오기 때문에

Perl 
Python 
and 
are 
languages 
programming 

자본에 의해 정렬 먼저 PythonPerl 될 것입니다. 또한 대문자가 먼저 오기 때문에 원하는 결과를 얻으려면 대문자가 먼저 오게되므로

print "\n".join(sorted(a.split())) 

을 얻을 수 있습니다.

편집 :이 수정/출력 해낸 질문을 다시 읽기 후 :

print "\n".join(sorted(a.split(), key=lambda x: x >= 'a')) 

출력 :

Python 
Perl 
and 
are 
programming 
languages 

설명 : 파이썬에서 정렬 기능 stable이다, 즉, 비교 키가 동일한 경우 요소의 순서가 서로 상대적으로 유지됩니다. 키 기능은 'a' (소문자로 시작하는 문자열 임)보다 크거나 같은 값으로 True 값을 할당합니다. 그렇지 않으면 False입니다. FalseTrue보다 작으므로 대문자 또는 소문자 단어의 순서는 변경하지 않고 대문자는 모두 앞쪽으로 이동합니다.

+0

하지만 단어의 순서가 바뀝니다. – pepr

+0

오 ... 나는 그 질문을 오해 한 것 같아. 내가 고쳐 줄게 : P 고정. – hochl

+0

+1. 좋은 해결책, 비록 그것이 작동하는 방법에 대해 더 많이 생각해야만합니다. 또한 정렬 알고리즘은 * 안정적이어야합니다 (즉, 동일한 키가있는 항목의 순서를 유지해야 함). – pepr

1

숙제 인 경우 숙제 인 "숙제"를 지정해야합니다. 어쨌든 두 목록을 사용하는 것은 나쁘지 않습니다.

  1. 두 목록을 비어있는 것으로 초기화하십시오.
  2. .split() 문자열을 사용하여 입력 문장을 분할하여 단어를 가져옵니다.
  3. for 루프에서 직접 split 식을 사용하여 추출 된 단어를 처리하십시오.
  4. word이 문자열 변수 인 경우 word[0]이 첫 번째 문자입니다. 'Z'보다 작거나 같으면 대문자로 된 단어이므로 원하는 목록에 추가해야합니다.
  5. '\n'.join(lst)을 사용하면 단어 목록에서 여러 줄을 가져올 수 있습니다.
+0

@hochl : 버그 수정에 감사드립니다.) – pepr

+0

+1 두 개의 목록을 사용하는 매우 긴 문장은 실제로 정렬보다 빠를 것이라고 생각하지만 시도하지는 않았습니다. – hochl