Python集合,单语练习

2024-06-07 00:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用Python编写的Grok学习练习。请回答以下问题和测试用例:

在开始一份新工作后,你会发现你的工作场所似乎有多种语言。也就是说,很多人似乎能说不止一种语言。你决定对你的同事做一个调查,看看他们都会说什么语言。编写一个程序输出只能说一种语言(他们是单语)的人的名字。在

从用户处读入一行或多行输入。每一行将是一个空格分隔的列表,列出可以说某种语言的同事的姓名。语言的名字将是第一件事。在

输入的第一行总是英语,你可以假设你工作场所的每个人都会说英语。在

以下是程序与用户之间的交互示例:

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.

你的程序可以任意顺序输出你的单语同事的名字。如果没有单语同事,你的程序应该输出人人都是多语种!。在

^{pr2}$

我已经走到了这一步,但是我的代码的问题是它只适合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.")

Tags: namein程序语言forislineresult
3条回答

利用defaultdict

设置变量:

from collections import defaultdict
masterList = defaultdict(list)

使用while循环来循环你的input,并将每次分配给变量,只要它是true。在

^{pr2}$

迭代您的defaultdict,看看是否有任何键只分配了一个值,如果没有,则打印每个人都是多语言的。在

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!")

在这个Python-Grok练习中,目标是使用集合:

a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)  # Union
print(a & b)  # Intersection
print(a - b)  # Difference
print(b - a)  # Difference
print(a ^ b)  # Symmetric difference

只使用所学知识-这是答案(也是最简单的)

monolingual = None

line = input('Line: ')
while line:
  line = line.split()
  names = set(line[1:])
  if monolingual is None:
    monolingual = names
  else:
    monolingual -= names
  line = input('Line: ')

if monolingual:
  for name in monolingual:
    print(name, 'is monolingual.')
else:
  print('Everyone is multilingual!')

相关问题 更多 >