<p><code>agecheck</code>是一个函数-您访问它的<code>age()</code>属性,它没有属性-因此出现错误。你知道吗</p>
<p>改用<code>age</code>。你知道吗</p>
<p>注意范围-在<code>ageCheck()</code>内的<code>status</code>不是您的全局<code>status</code>,而是一个局部变量。使用<code>status</code>作为<code>string</code>或<code>bool</code>取决于函数。你知道吗</p>
<p>决定使用哪一个或两个不同的变量作为status(true/false)和status(retired或not)。你知道吗</p>
<p>您可以这样重写一些代码:</p>
<pre><code>#!/usr/bin/env python3
def getAge():
while True:
age = input("Enter Your Age: ")
if age.isdigit() and int(age) > 0:
return int(age)
# repeat until number given
def isElegibleForDiscount(someAge, isRetired):
return someAge < 18 or someAge >= 65 and isRetired # operator precedence, no () needed
def discountCheck(myAge,myStatus):
if isElegibleForDiscount(myAge, myStatus == "retired"):
print("You get 5% off")
else:
print("No discount, sorry.")
def welcome():
print()
print("Welcome to Age Test")
welcome()
age = getAge()
discountCheck(age,"retired")
discountCheck(age,"still kickin")
</code></pre>
<p>为了避免在解析非整数输入时出错,在不需要全局变量的情况下传递变量,并便于逻辑检查。你知道吗</p>
<p>17的输出:</p>
<pre><code>Welcome to Age Test
Enter Your Age: 17
You get 5% off
You get 5% off
</code></pre>
<p>65的输出:</p>
<pre><code>Welcome to Age Test
Enter Your Age: 65
You get 5% off
No discount, sorry.
</code></pre>
<p>HTH公司</p>