Python 是否有更简单的方法输入多个名称并相应地存储它们?

Python 是否有更简单的方法输入多个名称并相应地存储它们?,python,dictionary,input,jupyter-notebook,jupyter,Python,Dictionary,Input,Jupyter Notebook,Jupyter,第一:所以我被告知要编写一个代码,可以存储要求旅行的学生的姓名,最多允许45名学生 第二:我还必须输入并存储每个学生是否已付款 第三:允许打印输出以显示哪些学生未付款 所以到目前为止,我还处在第一阶段。这是我的代码,我决定使用dictionary命令: d = {} d [input("have the student paid?: ")]=input("enter 1st name: ") d [input("have the student

第一:所以我被告知要编写一个代码,可以存储要求旅行的学生的姓名,最多允许45名学生

第二:我还必须输入并存储每个学生是否已付款

第三:允许打印输出以显示哪些学生未付款

所以到目前为止,我还处在第一阶段。这是我的代码,我决定使用dictionary命令:

d = {}
d [input("have the student paid?: ")]=input("enter 1st name: ")
d [input("have the student paid?: ")]= input("enter 2nd name: ")
d [input("have the student paid?: ")]= input("enter 3rd name: ")
d [input("have the student paid?: ")]= input("enter 4th name: ")
d [input("have the student paid?: ")]= input("enter 5th name: ")
它工作得非常好

但是,对于如何输入姓名并正确分配学生已付款/未付款的姓名,还有其他方法吗

有什么方法可以代替一个接一个的写,因为我需要写45个

这不是我对第一个问题的完整答案


对于我的第二个和第三个问题,我还需要额外的帮助。

第一部分可以使用for循环:

d = {}
for number in range(45):
    d[input("have the student paid?: ")] = input(f'enter student {number} name: ')
你试过使用一种新的方法吗

另外,你的字典应该是相反的。你有一本学生名字的“付费”字典(可以是
yes
no
)。但是,当您尝试打印词典时,它只有两个成员:
yes
no
,只有两个名称。这是因为您正在覆盖最后一个相应的值

试着这样做:

students={}#声明一个“students”字典
对于范围(45)内的i:#此循环将执行45次(从0到44)
学生姓名=输入('输入学生姓名:')#获取学生姓名
input_student_has_paid=input(‘学生是否已付款?Y/N:’)#仅接受Y或N作为答案,以避免不一致
如果输入_student_在['y','yes']中有_paid.lower():#接受'y'或'yes'(由于.lower()不区分大小写)
学生已支付=真实
其他:
学生已支付=错误
学生[student_name]=学生已付款#例如,这将是d['rafael']=False,因为我尚未付款
印刷品(学生)

.

最具python风格、可读性最低的方法如下:

学生人数=45
d={input(“学生姓名:):(如果输入(“已支付:”).lower()在“是”中,否则为False)表示{input(学生人数)}

请注意,第一个提示是“Has paid”,第二个提示是“Student name”,因此它是颠倒的,但与OP所述的方式相同。还请注意,提示“Has paid”将为以下答案提供真值:“y”、“e”、“s”、“ye”、“es”、“yes”以及所有大小写字母的组合。

如果是“most pythonic”你的意思是复杂且不可读,是的……我同意。它也是
.lower()
而不是
.lower
。被称为“最pythonic”我指的是完全使用python语法的版本。感谢您的更正,我将对其进行编辑。内联
if
也可以删除,因为
中的
已经返回True或False,因此不需要它。实际上,它可以:p@Dharman,我知道这不是你的代码,但是你知道写下它的函数是什么吗,“['y','yes']”.它对程序有什么影响?我已经试过在运行程序时使用或不使用“['y','yes'””我似乎看不出有什么不同。@JonathanAlieSaputra我不懂Python。即使我懂Python,我也不知道Rafa de boas写的这个函数是做什么的。请问这个答案的作者澄清一下,不是我。我只是编辑了答案,没有写这个答案。我不是答案的作者,正如你所看到的是cl《JonathanAlieSaputra如果['y','yes']
中的某个东西
代码是检查
某个东西
是否等于
'y'
'yes'
(因为它们都在该列表中)@rafa de boas,这行代码中“f”的功能是什么,输入(f'enter student{number}名称:')