2017-12-27 24 views
0

입력 텍스트를 Discrete Regional_indicator 이모티콘으로 변환하는 프로그램에서 작업하고 있습니다. 그러나 문제는 "cab"와 같이 단어를 입력하면 " 알파벳". 단어를 입력 할 때 사전 순으로 정렬되지 않도록 프로그램을 변경할 수있는 방법이 있습니까? (난 단지 테스트 목적을 위해 처음 3 개 문자를 프로그램했습니다. 파이썬으로 코딩 3.5 IDLE) 문자는 그 문장에 표시 한 다음이 텍스트를 출력하면, 프로그램이 문장 검사를받는알파벳 순서로 프로그램 인쇄를 중지하는 방법

한마디로
import sys 
sentence = input("Enter a sentence:") 
sentenceLower = sentence.lower() 
sentenceList = list(sentenceLower) 
sentenceListLength = len(sentenceList) 
while sentenceListLength > 0: 
    if "a" in sentence: 
     sys.stdout.write(":regional_indicator_a:") 
     sentenceListLength = sentenceListLength - 1 
    if "b" in sentence: 
     sys.stdout.write(":regional_indicator_b:") 
     sentenceListLength = sentenceListLength - 1 
    if "c" in sentence: 
     sys.stdout.write(":regional_indicator_c:") 
     sentenceListLength = sentenceListLength - 1 

Discord에 복사하여 붙여 넣기.

+0

나는 당신이하려는 것을 이해하고 있는지 모르겠다.하지만 나는 아마도 문장에서 문자를 찾는 대신 문장 속의 문자들을 반복하고 싶을 것이라고 생각한다. –

+0

이것은 짧은 시간에 내 머리 속에서 생각해 낼 수있는 가장 효율적인 방법보다 효율적이지 않습니다. –

답변

2

문자 수를 반복하지 않고 문장의 문자를 반복해야합니다.

for c in sentence: 
    if c == "a": 
     sys.stdout.write(":regional_indicator_a:") 
    elif c == "b": 
     sys.stdout.write(":regional_indicator_b:") 
    elif c == "c": 
     sys.stdout.write(":regional_indicator_c:") 

당신이 문자열에서 문자가있는 경우 바로 확인하고 있습니다 일을, 그래서 다시 순서가 당신에게 편지를 줄 것이다.

+0

나는 정확한 질문에 어떻게 대답했는지를 좋아하지만, 여러개의 'if'의 미학과 비 효율성에 대해서는 언급하지 않았다. +1 –

+0

적어도 elif로 전환했습니다. –

+0

'if'를 제거해야합니다 ... –

1

한 가지 방법은

for c in sentenceLower : 

대신

for i in range(sentenceListLength) : 
    c = sentenceLower[i] 

import sys 
sentence = input("Enter a sentence:") 
sentenceLower = sentence.lower() 
sentenceListLength = len(sentenceLower) 
for i in range(sentenceListLength) : 
    c = sentenceLower[i] 
    if (("a" <= c) and (c <= "z")) : 
     sys.stdout.write(":regional_indicator_"+c+":") 
    else : 
     # Do your stuff 
     pass 

당신이 할 수뿐만 아니라 횡단 자 (그것은 일반적으로 더 파이썬으로 간주 될 것이다). 정수 인덱스를 사용하는 것이 때로는 더 융통성있는/다목적입니다 (귀하의 경우에 달려 있습니다).

+0

인덱스가 필요한 경우에도 대개 범위 대신 열거를 통해 얻습니다. –

+0

@MadPhysicist - 주로 맛의 문제입니다. 속도 또한 (사소한) 문제입니다. https://stackoverflow.com/questions/11901081/only-index-needed-enumerate-or-xrange 및 https://stackoverflow.com/questions/11990105/rangelenlist-or- 열량 론자, 예. –

+0

enumerate처럼 보이는 것은 매번'__getitem__'을 호출하는 것보다 빠릅니다. –