【问题标题】:Trying to store array from main to an array in another function试图将数组从主存储到另一个函数中的数组
【发布时间】:2013-12-03 21:39:42
【问题描述】:

这个程序应该在 main 中创建一个数组,并提示用户输入 5 个整数并将它们存储在数组中的一个名为 fibArray 的函数中。然后它创建一个名为 containsOnlyOdd 的函数,该函数将数组排除在外,如果数组仅包含奇数则返回 true,否则返回 false。打印一条指示结果的消息,例如 ex: [1,2,3,4,5] “数组包含奇数和偶数。”或 [1,3,5,7,9] "数组只包含奇数。

错误是获取在 fibArray 的第 10 行,即 fibArray = [0] * num。 TypeError: 不能将序列乘以非 int 类型列表。

def main():
    integer = 5
    intArray = [0] * integer
    for index in range(integer):
        intArray[index] = int(input("Enter integers:"))
    print(intArray)
    fibArray(intArray)

def fibArray(num):
    fibArray = [0] * num
    for index in range(num):
        print(num)

def containsOnlyOdds(lst):
    for num in lst:
    if num % 2 == 0
        #print("This list is all odd")
         return false`
    #print("This list has even numbers")            
    return True

main()

我做错了什么?请帮忙!!

【问题讨论】:

  • 请改写标题。 “我试过了”?...你试过什么?
  • 你正在传递一个列表,看起来你期待一个 int。
  • @shx2 我改了标题:)。 @valeHalfHeart 任何建议或帮助都会很棒。我是初学者!!它应该是什么样子?
  • 除了主要错误消息的问题外,您还需要在 containsOnlyOdds 函数中正确缩进“if”语句。

标签: python arrays


【解决方案1】:

这正是错误消息所指出的:您将一个数组交给 fibArray:

fibArray(intArray)

它又试图将它与 [0] 相乘:

fibArray = [0] * num

你只能调用 fibArray 并传递一个数字,而不是一个数组。

编辑/添加:

数字已经存储在数组 intArray 中。不需要函数 fibArray。当然,您也可以将数字传递给一个函数,然后再次存储这些值。由于您刚刚开始使用 python,我建议现在将其保留为 value-checking-function。程序运行后,您可以尝试将部分代码封装在另一个函数中。

def containsOnlyOdds(lst)的定义也有一些语法错误:你应该修复循环和if语句的缩进。此外,您在语句后缺少一个冒号,例如

for anElement in aList:
    if (statement):
        #do something, e.g. return False
    #do something else, e.g. return True

【讨论】:

  • 任何关于我应该应用以使其工作的更改的建议。我很感激任何帮助。我是这一切的初学者。
  • 我在 fibArray 函数中添加了变量 num = 5 并且代码有效,但是在我运行它之后打印 5 5 不是打印语句。所以我可以从我的最后一个功能打印。
  • 当然它会打印 5 5s.. 你有一个声明说:for index in range(num): print(num).. 就像我之前建议的那样,请检查循环的定义和用法,有新问题后再回来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 2020-02-01
  • 2022-01-02
  • 1970-01-01
相关资源
最近更新 更多