<p><strong>解决方案的问题和更正:</strong></p>
<blockquote>
<p>it only take the first value of <code>p</code> and does not give <code>p</code> its new value.</p>
</blockquote>
<ol>
<li><p>再次向用户请求<code>p</code>,但不要将这个新值赋给<code>newp</code>变量,如下所示:</p>
<pre><code>newp = int(input("Please try again: "))
</code></pre></li>
</ol>
<blockquote>
<p>does not preform the second check.</p>
</blockquote>
<ol start=“2”>
<li><p>您的<code>else</code>语句正在检查<code>newp</code>变量范围之外的<code>newp</code>上的条件,该变量位于<code>if</code>语句内。您应该将检查<code>newp</code>变量封装在<code>if</code>语句中,如下所示:</p>
<pre><code>def p_parameter(p):
if p < 10 or p > 100:
newp = int(input("Please try again: "))
if newp <10 or newp >100:
</code></pre></li>
<li><p>当程序没有输入<code>if</code>语句时,<code>p_parameter()</code>函数中没有<code>return</code>语句。所以应该是这样的:</p>
<pre><code>def p_parameter(p):
if p < 10 or p > 100:
newp = int(input("Please try again: "))
if newp <10 or newp >100:
print( "Good Bye")
bye()
else:
return newp # need return statements like this
else:
return p # need return statements like this
</code></pre></li>
</ol>
<p><strong>对您的问题的建议解决方案</strong>:</p>
<blockquote>
<p>What I want to do is check to see if 'p' is < 10 or 'p' > 100, if it is then give the user a chance to reenter a new value of 'p' and use that value as long as it fits within the allowed parameters.</p>
</blockquote>
<ol>
<li>如果收到正确答案,请使用<code>while True:</code>无限循环和<code>break</code>语句退出。在</li>
<li><p>使用<code>try</code>、<code>except</code>和{<cd3>}块和{<cd17>}</p>
<ol>
<li>捕捉由非整数输入引起的任何错误。在</li>
<li>检测任何超出允许范围的输入。在</li>
</ol></li>
</ol>
<blockquote>
<p>After the second check if the user still has entered an incorrect value of 'p' I want the program to close. </p>
</blockquote>
<p>要关闭程序,您可以:</p>
<ol>
<li>让用户点击<code>ctrl+c</code>(我的个人偏好)、<em>或</em></li>
<li>设置一个计数器,该计数器指示要运行<code>while</code>循环的次数,然后使用<code>sys.exit(0)</code>来强制程序退出,如果达到了一个限制(注意:首先您需要<code>import sys</code>才能使用它;我认为您的<code>bye()</code>就是这样做的)。在</li>
</ol>
<p><strong>把它们放在一起:</strong></p>
<ol>
<li><p>在<code>main()</code>函数中,删除<code>input()</code>语句,只调用<code>p_parameter()</code>函数,如下所示:
p=p_参数()</p></li>
<li><p>按如下方式定义<code>p_parameter()</code>函数:</p>
<pre><code>import sys
def p_parameter():
exit_counter = 1 # counter to exit after 2 tries
while True:
try:
p = int( input( "Please enter a number between 10 and 100: ") )
except ValueError:
print( "Not a number, Try Again" )
else:
if 10 < p < 100: # this is much faster than your approach
break # exit the loop
else:
print( "Value not in range")
# increment counter to exit when 2 tries are over
exit_counter+=1
if ( counter > 2 ):
print( "Good Bye" )
sys.exit(0) # bye()
return p
</code></pre></li>
</ol>