Python 在 for 循环中跳过我的 if 和 else 语句,但是 for 循环是 运行
Python skipping my if and else statement in a for loop, but the for loop is running
好吧,我还在学习,我现在正在学习 pyqt5 设计器,但我对 for 和 if 语句有疑问,其中 python 不做其他任何事情,或者如果,我使用 print (empleados[i] ["Nombre"]), 检查 else 是否为 运行ning 但 if 的 none 或 else 运行
for i in range(0,len(empleados)):
print(empleados[i]["Numero"])
if self.ui.num.text() == empleados[i]["Numero"]:
QtWidgets.QMessageBox.information(self,"Advertencia","No se pueden registrar dos numeros de empleado iguales")
else:
empleados.append({"Nombre":self.ui.nom.text(),
"Numero":self.ui.num.text(),
"Salario":self.ui.salario.text(),
"Dep":self.ui.dep.currentText(),
"FechaC":self.ui.dateC.date(),
"FechaN":self.ui.dateN.date()})
print (empleados[i]["Nombre"])
break
当且仅当没有任何匹配的 Numero
时,是否打算将新元素附加到 empleados
?如果是这样,我认为这可以解决问题:
if any(e["Numero"] == self.ui.num.text() for e in empleados):
QtWidgets.QMessageBox.information(
self,
"Advertencia",
"No se pueden registrar dos numeros de empleado iguales"
)
else:
empleados.append({
"Nombre":self.ui.nom.text(),
"Numero":self.ui.num.text(),
"Salario":self.ui.salario.text(),
"Dep":self.ui.dep.currentText(),
"FechaC":self.ui.dateC.date(),
"FechaN":self.ui.dateN.date()
})
一般来说,在遍历列表时修改列表效果不佳,但在这种情况下,我认为无论如何你都不想在循环内进行追加,因为你只想追加一个元素。
如果 Numero
是唯一的,您可以考虑制作 empleados
以该字段为关键字的字典,例如:
emp_by_num = {e["Numero"]: e for e in empleados}
这样您就可以使用 in
进行快速检查,而不必使用 any
:
if self.ui.num.text() in emp_by_num:
好吧,我还在学习,我现在正在学习 pyqt5 设计器,但我对 for 和 if 语句有疑问,其中 python 不做其他任何事情,或者如果,我使用 print (empleados[i] ["Nombre"]), 检查 else 是否为 运行ning 但 if 的 none 或 else 运行
for i in range(0,len(empleados)):
print(empleados[i]["Numero"])
if self.ui.num.text() == empleados[i]["Numero"]:
QtWidgets.QMessageBox.information(self,"Advertencia","No se pueden registrar dos numeros de empleado iguales")
else:
empleados.append({"Nombre":self.ui.nom.text(),
"Numero":self.ui.num.text(),
"Salario":self.ui.salario.text(),
"Dep":self.ui.dep.currentText(),
"FechaC":self.ui.dateC.date(),
"FechaN":self.ui.dateN.date()})
print (empleados[i]["Nombre"])
break
当且仅当没有任何匹配的 Numero
时,是否打算将新元素附加到 empleados
?如果是这样,我认为这可以解决问题:
if any(e["Numero"] == self.ui.num.text() for e in empleados):
QtWidgets.QMessageBox.information(
self,
"Advertencia",
"No se pueden registrar dos numeros de empleado iguales"
)
else:
empleados.append({
"Nombre":self.ui.nom.text(),
"Numero":self.ui.num.text(),
"Salario":self.ui.salario.text(),
"Dep":self.ui.dep.currentText(),
"FechaC":self.ui.dateC.date(),
"FechaN":self.ui.dateN.date()
})
一般来说,在遍历列表时修改列表效果不佳,但在这种情况下,我认为无论如何你都不想在循环内进行追加,因为你只想追加一个元素。
如果 Numero
是唯一的,您可以考虑制作 empleados
以该字段为关键字的字典,例如:
emp_by_num = {e["Numero"]: e for e in empleados}
这样您就可以使用 in
进行快速检查,而不必使用 any
:
if self.ui.num.text() in emp_by_num: