<p>最好先过滤数字,然后再分类。</p>
<pre><code>numbers = [x, y, z]
sorted_odd_nums = sorted((x for x in enumerate(numbers) if x[1]%2),
key = lambda x:x[1],
reverse=True)
if not sorted_odd_nums:
# all numbers were even and filtered out.
elif sorted_odd_nums[0][0] == 0:
# x is the biggest odd number
elif sorted_odd_nums[0][0] == 1:
# y is the biggest odd number
elif sorted_odd_nums[0][0] == 2:
# z is the biggest odd number
</code></pre>
<h2>它的作用:</h2>
<p><code>enumerate(numbers)</code>返回一个由<code>(index, item)</code>对组成的序列。由于原始列表是<code>[x, y, z]</code>,因此即使经过筛选和排序,我们也可以跟踪<code>x</code>、<code>y</code>、<code>z</code>。</p>
<p>如果给定元组中的第二个项不是偶数,则<code>(x for x in enumerate(numbers) if x[1]%2)</code>过滤上述枚举。</p>
<p><code>sort( ... , key=lambda x:x[1], reverse=True)</code>使用已筛选项的第二个索引项(原始编号)的值按降序排序。</p>
<h2>用户输入</h2>
<p>要从用户读取,最简单的方法是使用<code>raw_input</code>(py2)/<code>input</code>(py3k)。</p>
<pre><code>number = int(raw_input('enter a number: '))
</code></pre>
<h2>仅使用if语句</h2>
<p>你必须嵌套if语句。比如:</p>
<pre><code>if x%2: # x is odd
if y%2: # y is odd
if z%2: #z is odd
if x>y and x>z: #x is the biggest odd number
elif y>z and y>x: #y is the biggest odd number
elif z>x and z>y: #z is the biggest odd number
else: #z is even
if x>y: #x is the biggest odd number
else: #y is the biggest odd number
else: #y is even
if z%2: #z is odd
...
</code></pre>