【发布时间】:2017-02-05 03:14:08
【问题描述】:
我正在自学python,但我真的被这个问题困住了。它要求“编写一个接受奇数列表作为输入的函数。遍历奇数列表并将每个变成偶数。将每个偶数存储在一个新列表中并返回该新列表。”
我对问题的后半部分感到满意,但在只允许输入为奇数时苦苦挣扎。
这是我到目前为止所写的,它适用于您提交的任何奇怪的列表,例如([1,3,5]) 并且当您以偶数开头时它会起作用,例如([2,3,5]) 但是当偶数在列表的中间时我无法让它工作,例如([1,2,3]) - 我希望它打印这是无法完成的。
def odd_to_even(x):
for i in x:
if i %2 == 0:
print('This is not an odd number')
break
else:
list = []
for n in x:
list.append(n -1)
return list
【问题讨论】:
-
为什么需要处理这种情况?规范说你得到一个奇数列表,所以你可以假设它总是正确的,除非它被要求你拒绝。此外,您还发生了奇怪的双循环(
for i in x和for n in x)。 -
这有点取决于你如何解释“接受”这个词。这包括“拒绝”吗?
-
FWIW:
if any(i % 2 == 0 for i in x): raise ValueError -
@deceze 我会说只有当它说 "only 接受"
-
顺便说一句,你不应该使用
list作为变量名,因为它会隐藏内置的list类型。这样做不是错误(因此 Python 不会打印错误消息),但它会使其他阅读您的代码的人感到困惑,并且可能导致 将导致打印神秘错误消息的错误.
标签: python list function for-loop