<p>如果将<code>input</code>转换为<code>int</code>而不是<code>str</code>,并且在决策语句之外初始化<code>small</code>和<code>big</code>,则代码将正常工作,如下所示:</p>
<pre><code>training = int(input("Choose training type (1, 2, 3): "))
s1 = 0.5
s2 = 0.7
s3 = 0.8
b1 = 0.7
b2 = 0.8
b3 = 0.88
spulse = "Small pulse: "
bpulse = "Big pulse: "
small = 0
big = 0
if training == 1:
small = (220 - 60) * s1
big = (220 -60) * b1
elif training == 2:
small = (220 - 60) * s2
big = (220 -60) * b2
elif training == 3:
small = (220 - 60) * s3
big = (220 -60) * b3
</code></pre>
<p>但是,一种替代办法可以是:</p>
<pre><code>value = 220 - 60
type_ = 0
types = {1 : [0.5, 0.7],
2 : [0.7, 0.8],
3 : [0.8, 0.88]}
while type_ not in types:
type_ = int(input("Pick a type: "))
if type_ not in types:
print("Invalid type.")
else:
big = value * types[type_][0]
small = value * types[type_][1]
print("Big = " + str(big))
print("Small = " + str(small))
</code></pre>
<p>这样,如果用户在提示符处输入<code>1</code>作为<code>type_</code>的值,则输出为:</p>
<pre><code>Big = 80.0
Small = 112.0
</code></pre>
<p>但是,如果用户在提示符处输入<code>2</code>作为<code>type_</code>的值,则输出为:</p>
<pre><code>Big = 112.0
Small = 128.0
</code></pre>
<p>如果用户在提示符处输入<code>3</code>作为<code>type_</code>的值,则输出为:</p>
<pre><code>Big = 128.0
Small = 140.8
</code></pre>
<p>对于输入的任何其他值,输出为<code>print("Invalid type.")</code></p>