好吧,我還在學習,我現在進入 pyqt5 設計器,但我有一個 for 和 if 陳述句的問題,其中 python 不執行 else 或 if,我使用 print (empleados[i]["Nombre"]) 來檢查如果 else 正在運行,但沒有 if 或 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
uj5u.com熱心網友回復:
empleados當且僅當沒有任何匹配的元素時,是否打算將新元素附加到Numero?如果是這樣,我認為這可以解決問題:
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:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/449658.html
上一篇:顫動的影片可移動串列?
