python - 函数中只允许循环奇数

标签 python list function for-loop

我正在自学 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

最佳答案

我同意@jonrsharpe、@ShadowRanger 和@deceze 的评论,即您可能不需要包含测试,但这不会有什么坏处。我将在这里使用@deceze 的行进行检查。请记住,您必须在使用它的循环外部声明您的列表,否则循环将在每次迭代时重置它。最好更改名称以使事情更清晰。

def odd_to_even(input_list):
    if any(i % 2 == 0 for i in input_list): raise ValueError
    output_list = []
    for i in input_list:
        output_list.append(i - 1)
    return output_list

融入@deceze 的好话并保持验证:

def odd_to_even(input_list):
    if any(i % 2 == 0 for i in input_list): raise ValueError
    return [i - 1 for i in input_list]

您在评论中询问双循环有什么奇怪的,所以我想在这里添加一个小解释。有时您希望在循环中包含循环,但这不是其中一种情况。您有一个列表,在这种情况下循环一次就足够了:

  1. 确定列表中的所有数字是否都是奇数(验证列表)
  2. 获取每个数字,对其进行修改,然后将其添加到输出列表中

通过在第一个循环中第二次循环,每次循环列表时都会循环列表。也许这个措辞令人困惑。假设您的输入列表是 [1, 3, 5]。通过在循环中使用循环,您最终会创建一个新列表来输出 3 次,因为您将为输入中的每一项创建一次输出。我希望这有助于您解决问题。

关于python - 函数中只允许循环奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725498/

相关文章:

swift - 重复调用函数以在 Swift playground 中产生当前时差

python - ngrams的计数频率

list - 如何在 Emacs Lisp 中将多个元素追加到列表中

javascript - 在 Javascript 中将 JSON 值设置为 HTML 表?

python - 根据列表列表过滤 Pandas 数据框

c++ - 如何在屏幕上显示对象列表?

python - : Python, ctypes.windll.user32.SystemParametersInfoA 中的参数是什么?

python - cProfiling 具有相对导入的模块

python - pyqt4如何实现多语言支持

Python请求: disallow cookies