首页 > 解决方案 > 循环通过可变长度循环以打印 af 字符串中的值以发送自动电子邮件

问题描述

我正在尝试使用 python 3 发送电子邮件,以让人们知道任务是否未根据 Excel 表完成。我将未完成的任务堆叠在一个列表中,并希望使用 f 字符串编写一条通用消息。

for k in  range(2):
    action = []
    grade = sheet.cell_value(k+1,0)
    nom = sheet.cell_value(k+1,1)
    email = sheet.cell_value(k+1,3)
    document = sheet.cell_value(k+1,6)
    force = sheet.cell_value(k+1,9)
    medical = sheet.cell_value(k+1,10)
    transport = sheet.cell_value(k+1,8)
    ent = sheet.cell_value(k+1,7)
    
    if document == 1:
        action.append("Documents")

    if force == 18:
        action.append("PT")

    if medical == 12:
        action.append("Exam")

    if transport == 1:
        action.append("Transport")

    for item in action:
        print(item) 

    if len(action) > 0:
        message = f"Hello {grade} {nom}, \n" \
                  f'\n' \
                  f'Je vous écris, car certains éléments de votre dossier sont expirés. \n' \
                  f'En effet, le/les element(s) suivant(s) sont expiré(s) ou le seront sous peu: \n' \
                  f'\n' \
                  f'{action[1]}\n' \
                  f'{action[2]}\n' \
                  f'{action[3]}\n' \
                  f'\n' \
                  

显然,由于列表中的元素可能少于 3 个,因此我会弹出一个错误。我该如何克服呢?

标签: pythonstringlistfor-loop

解决方案


使用列表切片,当您使用列表切片时,list[start:end]您会得到一个从长度“开始”到“结束”-1 的新列表。

task[1:4]

如果 end 超出范围,错误会被优雅地自动处理!

或者,您也可以参数解包 ( print(*task[1:4],sep='\n')) 或在切片上循环。


推荐阅读