擅长:python、mysql、java
<p>循环正在检查每个条目,如果该条目不相等,它将创建另一个实例。但是如果这个特定的条目是相等的,它不会停止,它只会继续到下一个条目,而下一个条目将不相等。这就是为什么在结尾处有两个额外的条目。在</p>
<p>您可以通过保留一个标志来解决此问题:</p>
<pre><code>found = False
for person in Person.personslist:
if prompt_fname == person.fname and prompt_lname == person.lname:
found = True
break
if not found:
Person(prompt_fname, prompt_lname)
</code></pre>
<p>然而,有一个更好的方法来做到这一点:你的方法效率非常低,因为它每次都需要进行线性扫描。相反,保留一个按全名键入对象的字典:</p>
^{pr2}$
<p>现在您只需一次入住即可:</p>
<pre><code>if "%s %s" % (prompt_fname, prompt_lname) not in Person.persons_dict:
</code></pre>