다음과 같이 작동하는 간단한 사전이 필요합니다. 먼저 4 개 언어로 번역 된 단어 수 (n)를 취한 다음 공백으로 구분 된 번역과 함께 각 줄 (완전히 n 줄)에 단어를 입력합니다. 사전 소스로 사용자에게 사전 소스로 제공된 단어 이상을 포함 할 수있는 구문을 입력하도록 요청해야합니다. 구문은 하나의 특정 언어로만 제공 될 수 있습니다. 예를 들어 영어의 혼합 일 수 있습니다. 프랑스어와 독일어이지만 우리의 경우에는 페르시아어 인 첫 번째 언어로 구를 번역해야합니다. 번역이 없으면 단어 자체 만 인쇄됩니다. 그래서 여기에 코드가 있습니다.
def read_dictionary():
for i in range(0, words_num):
dict_words = str(input())
words[dict_words.split()[0]] = dict_words.split()[1:]
def translator():
translation = ""
input_phrase = str(input("Enter your phrase to translate please: ")).split()
for word in input_phrase:
for k, v in words.items():
if word in v:
translation += (k + " ")
else:
translation += (word + " ")
print(translation)
words_num = int(input("Enter the number of existing translated words in dictionary: "))
words = {}
read_dictionary()
translator()
여기에 샘플 입력과 원하는 출력이 있습니다.
**input:**
Enter the number of existing translated words in dictionary:
4
man I je ich
kheili very très sehr
alaghemand interested intéressé interessiert
barnamenevisi programming laprogrammation Programmierung
Enter your phrase to translate please:
I am very interested in programming
**output:**
man am kheili alaghemand in barnamenevisi
그러나 대신 다음과 같이 출력됩니다.
man I I I am am am am very kheili very very interested interested alaghemand interested in in in in programming programming programming barnamenevisi
문제는 귀하의 translator()
기능 에서 비롯됩니다 .
의 각각 word
에 대해 에서 input_phrase
각 k, v
쌍 을 반복합니다 words.items()
. 아직 까진 좋음.
그래서 우리는 무엇을 원합니까? k, v
일치하는 단어 (in v
)를 찾을 때까지 각 쌍을 살펴본 다음 (만약 있다면) 우리가 만들고있는 키 k
를 추가하고 싶습니다 translation
. 일치하는 단어를 찾지 못하면 원래 word
값을에 추가합니다 translation
.
코드의 문제는 단어를 찾았더라도 사전의 나머지 키를 계속 살펴 본다는 것입니다. 또한 사전의 각 키에 대해 번역을 추가하거나 일치 항목을 찾을 수없는 경우 word
에만 기본을 추가해야하는 시작을 추가합니다 word
.
개인적으로 내부 for
루프를 새 함수 translate_word()
또는 이와 유사한 것으로 이동 하지만 translator()
큰 변경없이 함수 를 수정하는 간단한 방법 은 다음과 같습니다.
def translator():
translation = ""
input_phrase = str(input("Enter your phrase to translate please: ")).split()
for word in input_phrase:
found = False
for k, v in words.items():
if word in v:
translation += (k + " ")
found = True
break
if not found:
translation += (word + " ")
print(translation)
새 translator()
함수에서 각 새 단어에 대해 변수 found
를로 설정 한 것을 볼 수 있습니다 False
. found
사전에서 적절한 번역을 찾았는지 여부를 나타냅니다.
그런 다음 사전을 반복합니다. 당신이 일치하는 항목을 찾을 경우, 추가 k
설정 번역에 found
에 True
(당신이 번역을 발견했기 때문에), 그리고 break
내부의 밖으로 for
루프.
내부 for
루프를 벗어나면에 found
대한 번역 이 있는지 확인합니다 word
. 당신이 번역을 발견하지 않은 경우, 당신은 단순히 추가 word
받는 사람 translation
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다