<p>您可以使用如图所示的<code>try</code>/<code>except</code>块,并添加其他条件进行验证(我检查了<code>validate_input()</code>中的空白边数,但可以扩展到正数,等等)。你知道吗</p>
<pre><code>#!/usr/bin/python
import math
#Triangle has three sides; two can be defined and the third is calculated
class Triangle:
def __init__(self):
self.side={"adjacent":0,"opposite":0,"hypotenuse":0}
def define_sides(self):
for i in self.side:
self.side[i]=self.get_side(i)
def print_sides(self):
for i in self.side:
print "side",i,"equals",self.side[i]
#return user integer or None if they enter nothing
def get_side(self,one_side):
prompt = "Enter length of "+one_side+": "
try:
return input(prompt)
except SyntaxError:
return None
def count_nones(self):
nones=0
for side, length in self.side.iteritems():
if self.side[side] == None:
nones+=1
return nones
def validate_input(self):
nNones=self.count_nones()
if nNones < 1:
print "You must leave one side blank."
quit()
if nNones > 1:
print "Only one side can be left blank."
def calculate_missing_length(self):
h=self.side["hypotenuse"]
a=self.side["adjacent"]
o=self.side["opposite"]
#hypotenuse is missing
if h == None:
self.side["hypotenuse"] = math.sqrt(a*a+o*o)
#adjacent is missing
if a == None:
self.side["adjacent"] = math.sqrt(h*h-o*o)
#opposite is missing
if o == None:
self.side["opposite"] = math.sqrt(h*h-a*a)
#begin program
triangle=Triangle()
triangle.define_sides()
triangle.print_sides()
triangle.validate_input()
triangle.calculate_missing_length()
triangle.print_sides()
</code></pre>