提问人:Selah 提问时间:10/17/2023 最后编辑:Selah 更新时间:10/17/2023 访问量:116
根据 python 中的 if-else 语句将元素附加到不同的列表中
Append elements to different lists based on if-else statements in python
问:
我一直在尝试在 Python 中创建以下程序。但是,我对我的程序感到沮丧,我不知道我应该做什么!具体来说,我无法根据我的 if-else 语句将元素附加到不同的列表中。应该发生的事情是,userInputMembers 应该根据用户输入的新成员数量分配给一个数组,因此程序会输出分配给每个数组的新成员数量。
相反,我最终得到的是空数组。我还在学习 Python 是如何工作的,所以现在我真的很困惑!
这是我的程序的最终输出的样子:
Number of Trainers: []
0 trainers have 0-5 new enrollees
0 trainers have 6-10 new enrollees
0 trainers have 11-15 new enrollees
以下是我当前程序的代码:
#Declare variables:
NUM_MEMBERS = 15
trainerNames = []
newMembers = []
newMembers1 = []
newMembers2 = []
newMembers3 = []
#Intitialize loop:
for i in range(NUM_MEMBERS):
userInputTrainers = input("Enter a trainer's last name")
userInputMembers = input("Enter the number of new members enrolled")
for userInputMembers in newMembers:
a = userInputMembers[1]
if a <= 5:
newMembers1.append(userInputMembers)
elif 5 < a <= 10:
newMembers2.append(userInputMembers)
elif 10 < a <= 15:
newMembers3.append(userInputMembers)
else:
print("Sorry, there isn't a category for that.")
userInputTrainers = trainerNames
trainerNames = len(trainerNames)
print("Number of Trainers:",trainerNames)
print(len(newMembers1), "trainers have 0-5 new enrollees.")
print(len(newMembers2), "trainers have 6-10 new enrollees")
print(len(newMembers3), "trainers have 11-15 new enrollees")
*编辑:我意识到我的帖子是其他人的帖子的副本,他们在 python 中尝试了相同的任务。我发现其他人的代码是“固定的”(包括在下面)
- 向我从中获取以下代码的人的原始帖子道歉。我试图认出他们是谁,但在这个过程中我失去了他们的职位。
这是我从另一篇文章中找到的上述问题的答案:
#Declare variables:
newMembers1 = []
newMembers2 = []
newMembers3 = []
newMembers = []
for i in range(1, 15):
t = input(f"Enter Trainer {i} Name: ")
n = int(input(f"Enter Trainer {i} # of enrollees: "))
L = [t, n]
newMembers.append(L)
我意识到他们的代码比我的更好,因为他们如何将每个输入分配给不同的变量,并将其附加到 data.append,如上所示。根据他们的代码,我尝试修复我的代码,如下所示:
#Declare variables:
newMembers1 = []
newMembers2 = []
newMembers3 = []
newMembers = []
for i in range(1, 15):
t = input(f"Enter Trainer {i} Name: ")
n = int(input(f"Enter Trainer {i} # of enrollees: "))
L = [t, n]
newMembers.append(L)
for trainers in newMembers:
a = trainers[1]
if a <= 5:
if type(n) == int:
newMembers1.append(trainers)
elif 5 < a <= 10:
if type(n) == int:
newMembers2.append(trainers)
elif 10 < a <= 15:
if type(n) == int:
newMembers3.append(trainers)
else:
print("Sorry, there isn't a category for that.")
print(len(newMembers1), "trainers have 0-5 new enrollees.")
print(len(newMembers2), "trainers have 6-10 new enrollees")
print(len(newMembers3), "trainers have 11-15 new enrollees")
答:
1赞
John Gordon
10/17/2023
#1
这里有很多错误。
首先,您从未实际向 添加任何内容。它从一个空列表开始,并且保持这种状态。你怎么期望什么被添加到其中?newMembers
其次,这三行实际上并没有做任何事情,因为你使用的是比较,而不是赋值:==
category0_5 == range(0,5)
category6_10 == range(6,10)
category11_15 == range(11,15)
第三,这种比较永远不会成立,因为返回一个字符串。您需要将输入转换为整数。input()
if userInputMembers == category0_5:
即使你确实转换为整数,它仍然不是真的,因为整数不等于范围。您的意思是检查范围是否包含整数?用代替:in
==
if userInputMembers in category0_5:
即便如此,它仍然可能不是真的,因为不包括最终数字。所以包括 0,1,2,3,4。它不包括 5.range()
range(0,5)
评论
0赞
Selah
10/17/2023
你好!感谢您的帮助!我意识到范围可能不是最好的命令,我可能应该使用诸如 if userInputMembers <= 5 之类的比较。我发现别人的帖子和我有同样的问题,我正在尝试查看他们的代码。不幸的是,我想我丢失了他们的帖子,但我会尝试使用他们的比较来编辑上面的代码。
0赞
John Gordon
10/17/2023
@Selah 您可以使用这样的表达式if 6 <= x <= 10:
0赞
Selah
10/17/2023
伟大!我的代码现在看起来更好了吗?
0赞
John Gordon
10/17/2023
@Selah运行它,看看它是否能达到你的要求。
0赞
Selah
10/17/2023
它不再显示我的任何打印报表。
评论
if userInputMembers == category0_5
不起作用,这会将单个字符串与范围
对象进行比较。你需要。if int(userInputMembers) in category0_5
category0_5 == range(0,5)
数组
。你所拥有的是一个列表
。