python - 循环通过可变长度循环以打印 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 个,因此我会弹出一个错误。我该如何克服呢?
解决方案
使用列表切片,当您使用列表切片时,list[start:end]
您会得到一个从长度“开始”到“结束”-1 的新列表。
task[1:4]
如果 end 超出范围,错误会被优雅地自动处理!
或者,您也可以参数解包 ( print(*task[1:4],sep='\n')
) 或在切片上循环。
推荐阅读
- vue.js - 无法从 Nuxt 应用程序的经典模式存储中的突变访问 i18 插件
- reactjs - 如何重构 componentWillMount 事件中的代码?
- c# - 当`List中`T`的属性发生变化时如何实现和触发事件
` 在所属类中 - python - 在python中循环一个protobuff枚举
- java - 创建多线程后无法处理请求
- node.js - 为什么在 Node.js CPU 绑定代码中使用异步模式?
- python - 从函数列表中获取随机函数并调用所选函数
- python - 如何将嵌套字典的所有值转换为字符串?
- javascript - Javascript ToDo 列表删除和完成按钮
- unity3d - 无法在 SceneView 中暂停游戏时旋转骨骼