2017-08-23 7 views
-3

私はPythonでGrokの学習を行っています。以下の質問とテストケースをご記入ください:Python set、Monolingual exercise

新しい仕事を開始した後、あなたの職場は非常に多言語に見えます。つまり、多くの人が複数の言語を話すことができるようです。あなたは同僚のアンケートをして、どの言語を話すことができるかを調べることにします。 1つの言語しか話せない人々の名前を出力するためのプログラムを書く(それらは単一言語である)。

ユーザーからの1行以上の入力を読み込みます。各行は、特定の言語を話すことができる同僚の名前のスペースで区切られたリストです。言語の名前がその行の最初のものになります。

入力の最初の行は常に英語であり、あなたの職場の誰もが英語を話すことができます。

Line: English Tim Nicky James Tara John Ben 
Line: German Nicky Tim 
Line: Mandarin Tim John 
Line: 
James is monolingual. 
Tara is monolingual. 
Ben is monolingual. 

あなたのプログラムは、任意の順序で出力あなたのモノリンガル同僚の名前をすることができます:ここで

はあなたのプログラムとユーザーの間に例の相互作用です。単一言語の同僚がいない場合は、プログラムにEveryone is multilingual!と出力されます。

Line: English Boris Aleksei Dmitry Ivan 
Line: Russian Dmitry Ivan Boris Aleksei 
Line: 
Everyone is multilingual! 

私は限り、このように行ってきたが、私のコードの問題は、それが唯一の1、2、3つの言語用食料調達するということです。より多くの言語が追加されると失敗します。 コード:

masterList = [] 

supportedLanguages = [] 

userInput = input("Line: ") 

while userInput != "": 
    splitUserInput = userInput.split() 
    temporaryList = [] 
    supportedLanguages.append(splitUserInput[0]) 
    temporaryList.append(splitUserInput[0]) 
    splitUserInput.remove(splitUserInput[0])  
    temporaryList.append(splitUserInput) 
    masterList.append(temporaryList) 
    userInput = input("Line: ") 

namesMaster = [] 

for language in masterList: 
    languageCopy = language 
    languageCopy.remove(language[0]) 

    names = set() 
    for name in languageCopy[0]: 
     names.add(name) 

    namesMaster.append(names) 

if len(namesMaster) == 1: 

    result = namesMaster[0] 
    for name in result: 
     print(name, " is monolingual.") 

elif len(namesMaster) == 2: 
    result = namesMaster[0].difference(namesMaster[1]) 
    print("Everyone is multilingual!") 
else: 
    result = namesMaster[0].difference(namesMaster[1], namesMaster[2]) 

for name in result: 
    print(name, " is monolingual.") 
+1

[あなたの質問を凝縮してください](https://stackoverflow.com/help/mcve) – Mangohero1

+1

4つ以上の言語でどのようなエラーメッセージが表示されますか? – SeeDerekEngineer

答えて

0

defaultdictを活用:

from collections import defaultdict 
masterList = defaultdict(list) 

ループにごinputし、限り、それはtrueだとしてあなたの変数にそれぞれの時間を割り当てることをwhileループを使用してください:あなたの変数は

セットアップ。あなたのdefaultdict

while True: 
    userInput = input("Line: ") 
    if len(userInput) > 0: 
    splitUserInput = userInput.split() 
    lang = splitUserInput[0] 
    # Everything after the first element is appended. 
    for s in splitUserInput[1:]: 
     masterList[s].append(lang) 
    else: 
    break 

反復任意のキーがそれらに割り当てられた一つの値だけを持っているかどうかを確認し、そうでない場合、誰もが多言語であることを印刷します。

all_multilingual = True 
for name, langs in masterList.items(): 
    if len(langs) == 1: 
    print(name + " is monolingual.") 
    all_multilingual = False 
if all_multilingual: 
    print("Everyone is multilingual!") 
+0

ありがとうmangoHero1。 – Codean

+0

あなたのソリューションは理にかなっており、完璧に機能します。 – Codean

+0

@Codean Glad私は助けることができた。あなたが満足すれば答えを受け入れるようにしてください! :-) – Mangohero1