python 3.8中列表理解中涉及Else语句的语法无效

2024-09-30 16:30:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚在我的python类中学习列表理解,想知道为什么下面的代码由于“else”子句返回无效语法错误

allDays=["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

daysWithPlaydate=[]

for days in range(len(allDays)):
    answer=input("Is there a playdate on " + allDays[days] + "?")
    if answer == "yes":
        daysWithPlaydate.append(allDays[days])
        
outputs=["Weekday Playdate: " + weekdays for weekdays in daysWithPlaydate if weekdays!="Friday" or weekdays!="Saturday" or weekdays!="Sunday" else "Weekend Playdate: " + weekdays for weekdays in daysWithPlaydate] 
for i in range(len(outputs)):
    print(outputs[i], end=", ")

注:对于最后的打印声明,我想知道在打印列表时如何删除最后一个逗号,因为我似乎总是在列表的最后一天之后得到一个逗号,谢谢


Tags: answerin列表forlenrangeoutputsdays
3条回答

适用于列表理解的有效Santax IF-ELSE为:

list_ = [statment1_  If cond1_ else statment2_ for i in iterable_]

奎师那的回答应该能解决你的清单理解问题

关于最后的逗号问题,如果您希望它们在一行中仅用逗号分隔,而在最后没有逗号,那么您可以只打印未打包的列表,并在打印功能中使用分隔符关键字而不是end。i、 e

print(*outputs, sep=", ")

你不需要循环两次

此外,条件语句无效,应为:

outputs=["Weekday Playdate: " + weekdays if weekdays not in ["Friday", "Saturday", "Sunday"] else "Weekend Playdate: " + weekdays for weekdays in daysWithPlaydate] 

我还使用了in关键字来进一步简化条件语句

要解决输出格式问题,可以使用join()方法将输出打印为:

print(', '.join(outputs))

输出:

Weekday Playdate: Monday, Weekend Playdate: Saturday, Weekend Playdate: Sunday

相关问题 更多 >