Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python程序-帮助在不使用字典的情况下将元素配对在一起_Python - Fatal编程技术网

Python程序-帮助在不使用字典的情况下将元素配对在一起

Python程序-帮助在不使用字典的情况下将元素配对在一起,python,Python,我正在学习Python入门课程,明天我有一个能力考试。在示例问题中,它要求: “用Python编写一个程序,列出最优秀的学生 频繁发生的重大事件(假设只有一个最频繁发生的重大事件)。您的程序应该要求用户输入要输入的学生人数,然后在单独的行中要求每个学生的姓名和专业(您不知道哪些专业将提前输入)。应该确定最频繁出现的专业,然后显示最频繁出现的专业的学生姓名(按照您希望的任何顺序)。在下面的示例中,用户正在输入数据。 有多少学生?5. 输入学生姓名 控告 进入少校 反恐精英 输入学生姓名 上下快速移

我正在学习Python入门课程,明天我有一个能力考试。在示例问题中,它要求:

“用Python编写一个程序,列出最优秀的学生
频繁发生的重大事件(假设只有一个最频繁发生的重大事件)。您的程序应该要求用户输入要输入的学生人数,然后在单独的行中要求每个学生的姓名和专业(您不知道哪些专业将提前输入)。应该确定最频繁出现的专业,然后显示最频繁出现的专业的学生姓名(按照您希望的任何顺序)。在下面的示例中,用户正在输入数据。
有多少学生?5.
输入学生姓名
控告
进入少校
反恐精英
输入学生姓名
上下快速移动
进入少校
体育课
输入学生姓名
汤姆
进入少校
反恐精英
输入学生姓名
杰克
进入少校
反恐精英
输入学生姓名
玛丽
进入少校
MTH
最常见的专业是:CS
控告
汤姆
杰克

所以,我开始写我的程序,但不幸的是我被卡住了。我想出了一个复杂的方法,把专业集中在一起,然后把它们分类。这样,就很容易显示最频繁的专业。然而,我似乎不知道如何为每个专业分配名称值。我知道字典不能用,因为它们是不可变的。给定我的代码,我可以使用什么函数将每个名称分配给一个专业

num_students = int(input("enter the number of students: "))
counter = 0

major_list = []
name_list = []

while counter < num_students:
    name = input("Enter Student Name: ")
    name_list.append(name)

    major = input("enter major: ").upper
    major_list.append(major)

    counter += 1

major_counter = {}

for word in major_list:
    if word in major_counter:
        major_counter[word] += 1

    else:
        major_counter[word] = 1

popular_majors = sorted(major_counter, key = major_counter.get, reverse = True)
top_major = popular_majors[0]

print("Most Frequent Mjaor is: ", top_major)

input("Press Enter to exit")
num_students=int(输入(“输入学生人数:”)
计数器=0
专业清单=[]
name_list=[]
而计数器

我对这件事很感兴趣。非常感谢你的帮助

I您的目标是在不使用字典的情况下将两个元素配对在一起。我想:

>>> array = []
创建一个数组

>>> array.append(["name","major"])
然后用两个值创建一个子数组

打印阵列 [['姓名','专业']]

查看数组中如何存在数组

array.append([“tom”,“CS”]) 打印阵列

如何添加你的东西

[['name', 'major'], ['tom', 'CS']]

这就是我们的最终结果

您的任务是显示最常用专业的学生列表。您的代码不跟踪学生姓名,但如果要将其包括在输出中,则需要跟踪学生姓名

一本清单字典是一个好办法。正如您所做的那样,使用专业作为关键,但不要计算学生人数,而是将每个学生添加到列表中。收集完用户的输入后,您可以找到最常见的专业并打印出其学生。大概是这样的:

major_students = {}
for major, student in zip(major_list, name_list):
    if major not in major_students:
        major_students[major] = []
    major_students[major].append(student)
在上文中,我保留了您将用户输入收集到两个列表中的方法,然后将它们放在一起进行处理。如果您在输入时将用户的输入直接插入到
专业学生
听写中,效果会更好:

major_students = {}
for i in range(num_students):
    name = input("Enter Student Name: ")
    major = input("enter major: ").upper()
    major_students[major] = major_students.get(major, []) + [name]
这就产生了一本以专业为关键字、以学生为价值观的词典。接下来,通过使用学生列表的长度对字典项进行排序,可以找到学生最多的专业:

major, students = sorted(major_students.items(), key=lambda x: len(x[1]), reverse=True)[0]

print("Most Frequent Major is {} with {} students: {}".format(major, len(students), ', '.join(students)))