Python 如果用户没有';我不接受邀请

Python 如果用户没有';我不接受邀请,python,list,Python,List,以下是我被要求做的: 创建一个程序,使用2个列表存储被邀请参加婚礼的客人的详细信息。 方法: 建立两个列表——一个是客人的名字,另一个是记录邀请是否被接受。注意,第二个数组应该是最初设置为false的布尔元素列表 你需要询问客人的姓名,然后问他们是否参加婚礼。 打印出一份只包括将要参加的人的名单 以下是我所做的: names = [""]*10 accept = [False]*10 accepted = [""]*10 counter = 10 for

以下是我被要求做的:

创建一个程序,使用2个列表存储被邀请参加婚礼的客人的详细信息。 方法: 建立两个列表——一个是客人的名字,另一个是记录邀请是否被接受。注意,第二个数组应该是最初设置为false的布尔元素列表 你需要询问客人的姓名,然后问他们是否参加婚礼。 打印出一份只包括将要参加的人的名单

以下是我所做的:

names = [""]*10
accept = [False]*10
accepted = [""]*10
counter = 10

for counter in range(0,10):
  names[counter] = str(input("What is your name?"))
  accepted[counter] = input("Are you accepting the invitation?")
  
  
  if accepted[counter] == "Yes" or accepted[counter] == "yes":
    accept[counter] = True
  else:
    names[counter] = ""

print("Here is a list of peoples names whom are attending:")
print(names)
我的老师说:

但你能想出一个更好的方式来显示出席者的名字吗


你能帮我解决这个问题吗?我想老师想让我把这个名字从名单上删除,但我不知道怎么做。我试过使用pop(),但我就是不明白(

名字列表应该包含所有被邀请的人,你不应该用空字符串替换名字,因为那样名字就不完整了

使用循环打印出席者的姓名,使用
accepted
列表中相应元素的索引

accepted
也没有必要成为一个列表。只需对当前答案使用一个普通变量即可

names = [""]*10
accept = [False]*10

for counter in range(0,10):
  names[counter] = input("What is your name?")
  accepted = input("Are you accepting the invitation?")
  
  if accepted.lower() == "yes":
      accept[counter] = True

print("Here is a list of peoples names whom are attending:")
for i, attending in enumerate(accept):
    if attending:
        print(names[i])

pop()
用于从列表中删除一个值。如果不带参数使用,它将删除最后一个值。如果给定一个值,它将“弹出”,或者换句话说,将其删除,并打印删除的值。

您能说明您如何尝试使用
pop
,您希望它做什么,以及它做了什么吗?
名称=[“”]*10 accept=[False]*10 accepted=[“”]*10 counter=10范围(0,10)内的计数器:name[counter]=str(输入(“你叫什么名字?”))accepted[counter]=input(“你接受邀请了吗?”)如果接受[counter]==“是”或接受[counter]==“是”:accept[counter]=True else:pop(name[counter])打印(“这是一个参与人员姓名列表:”)print(names)
,但程序只是这样说:“raceback(最近一次调用):文件“python”,第14行,在namererror中:名称“pop”未定义“请将代码添加到帖子中作为编辑,而不是评论。考虑到您当前的实现,有两件事可能会让用户感到恼火(1)您正在丢弃不接受的人的姓名数据。存储虚假但不记录是谁说的有什么意义?(2)当你打印列表时,你的名字中会有很多空字符串。这看起来不好,如果有人想把这个列表加载到另一个工具中,也可能会产生问题。Barmar的答案解决了这两个问题,但值得花时间思考一下你的老师所说的“更好”是什么意思。我似乎越来越明白了输入3个名称后出现错误“Traceback(最近一次调用last):索引器中的文件“python”,第8行:字符串索引超出范围”。很抱歉,
已接受[counter]
应已被
接受。