<p>尊重@Shadow和@Scott的评论,有一些东西可以用不同的方式来写。既然您正在学习python,我发现这仍然对您有用。我将开始评论您的原始代码:</p>
<pre><code>def isPrime(input):
check = input - 1
checkmod = input % check # checkmod is recalculated in the loop: eliminate
for i in range (input):
checkmod = input % check
check -=1
# The test condition below can be simplified. For example, you
# test that input>1 or input==2 at every loop, when in fact input
# never changes after entering the function. I think that those
# two tests should shortcut at the very beginning.
#
if checkmod != 0 and input > 1 and check <= 1 or input == 2:
return 'Prime'
# Not sure if this is an optimization, but the two statements
# seem quite separate. I would use either "else" or just simply
# another "if"
elif checkmod == 0 and check > 1:
return 'Not prime'
</code></pre>
<p>这就给我们留下了这个函数的版本:我怀疑它的速度快得多,但是我认为其中有一些有用的地方。无论如何,你将是法官:-)</p>
<pre><code>def isPrime(input):
# room here to test input>=1
if input in [1, 2]:
return 'Prime'
# if you work out the sequence of values for check
# they can be generated via range(). Mindful though
# that the comparison has to be adjusted against (i-1)
# which can be simplified by moving -1 to the other side
# hence comparing against 2
#
for i in range(input-1, 0, -1):
checkmod = input % i
if checkmod != 0 and i <= 2:
return 'Prime'
if checkmod == 0 and i > 2:
return 'Not prime'
numberhere = 22
print(isPrime(numberhere)) # where to put in number
</code></pre>