为了账号安全,请及时绑定邮箱和手机立即绑定

python,循环:搜索列表以查看项目是否存在,附加到新列表

python,循环:搜索列表以查看项目是否存在,附加到新列表

尚方宝剑之说 2021-05-30 06:25:20
我正在尝试制作一个程序,让我的学生输入他们的ID号,这样我(在代码中稍后)可以自动发送出勤率,并记录谁交了作业和谁没有交作业,因此可以将电子邮件发送给父母。我已完成其他所有工作,但无法输入学生证的工作内容。我想要做的是:1)确保他们的输入是 7 个字符长 2)检查他们的 ID 是否存在于 'fakeID' 2a)让学生用 ay/n 从 'classNames' 中确认他们的名字。2b) 将他们的名字附加到inputIDList 3) 如果输入是 == 到 9999990 退出循环。它在做什么:1)要求输入2)在代码中继续前进而不循环播放3)不追加 inputIDList我认为对于我目前的技能水平来说,这太复杂了。编辑:循环不检查输入的 ID 是否在我的fakeID列表中。此外,它不是循环 for,所以一旦输入输入,它就会继续下一组代码。edit2:更新的代码有效。:DfakeID = ['1111111','1111112','1111113','1111114','1111115']classNames = ['name1', 'name2', 'name3', 'name4', 'name5']toplist = list(zip(fakeID, classNames))inputIDList =[]def inputID(): while True:     id = input('Please enter your student ID and hit Enter')     if id == '9999990':         print('Done')         break     if id in fakeID:         inputIDList.append(id)         print('recorder')         continue     if id not in fakeID:         print('I do not know this ID. Please try again.')         continue
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

以下是一些入门知识:


fakeID = {'1111111','1111112','1111113','1111114','1111115'}


while True:

    id = input('Please enter your student ID and hit Enter')


    if id == '9999990':

        print('Done')

        break


    if id not in fakeID:

        print('I do not know this ID. Please try again.')

        continue


查看完整回答
反对 回复 2021-06-01
?
青春有我

TA贡献1784条经验 获得超8个赞

如果我正确理解您的问题,那么我想您正在尝试将学生的 ID 号保存在inputIdList 中,然后检查特定 ID 是否在inputIdList 中。在最后一个if条件中,您尝试将List类型对象与String类型对象进行比较,这肯定会引发TypeError。而是定义以下函数并在if条件中调用它。


def check_list(id):

    try:

        inputIdList.index(id)

        return True

    except TypeError:

        return False

list.index()方法尝试在列表中查找元素并返回元素的索引号。然后在你的if条件中调用这个函数。


if check_list('9999990'):

    print('done') 

    #break

此外,inputIdList = [""]如果您已经将其初始化为inputIdList = []. 如果问题仍然存在,请在线程中发送输出。


查看完整回答
反对 回复 2021-06-01
?
aluckdog

TA贡献1847条经验 获得超7个赞

正如 Abarnert 所说,您需要重组您的方法。但我想我找到了你被卡住的地方。检查输入数字的长度后,您应该检查该数字是否与任何匹配fakeID,并获取相应的类名称。所以你的第一个循环应该是这样的

for i in toplist:

而不是

for i in [i for i,x in enumerate(inputIDList) if x == fakeID]:

因为inputIDList是空的,你的程序不会进入循环。在更改后的循环中,您应该检查

if s == fakeID

这是我对您所需操作的理解的极限。但是,如果您需要进一步的帮助,请询问。干杯。


查看完整回答
反对 回复 2021-06-01
  • 3 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信