【问题标题】:I can't check my 2D arrays, how can I fix that?我无法检查我的二维数组,我该如何解决?
【发布时间】:2020-10-21 14:55:28
【问题描述】:

我正在制作一个程序来计算在停车场支付的钱(不是真实的)。 我有 2D 数组存储一周中的几天的数据([天,最大小时,每小时价格]),但是当我尝试检查一天时,我得到了一个

TypeError: 'int' 对象不可下标

错误在第 15 行。

这是供参考的代码,虽然未完成:

price_morning = [["Monday", 8, 2.00], ["Tuesday", 2, 10.00], ["Wednesday", 2, 10.00], ["Thursday", 2, 10.00], ["Friday", 2, 10.00], ["Saturday", 2, 10.00], ["Sunday:", 4, 3.00]]

price_midnight = [[8, 2.00], [8, 2.00], [8, 2.00], [8, 2.00], [8, 2.00], [8, 2.00], [8, 2.00]]

day = input("Day: ")

time = input("Time: ")

hours_of_stay = input("Hours of stay: ")

quest = input("Do you have a frequent parking number? ")

if quest == "Yes" :
    f_p_n = input("Frequent Parking Number: ")

else :
    f_p_n = 0

"Calculation: "

if int(time) < 16 :
    for i in range(len(price_morning)):
        if price_morning[i[0]] == day:
            if price_morning[i[1]] >= hours_of_stay:
                price = int(hours_of_stay) * int(price_morning[i[2]])

有什么办法可以解决吗?

注意:

f_p_n代表频繁停车号码,后面会用到。

【问题讨论】:

  • 欢迎 SOF!错误将指示 which line-number too 。为了更清楚,您可以添加它
  • 我不明白您希望使用例如访问price_morning 的哪个元素price_morning[i[0]]。这意味着首先计算i[0],然后使用该结果索引到price_morning
  • 无论如何,你应该not iterate that way, but instead directly grab the rows。在 Python 中,您可以通过 just using in price_morning for your for loop 执行此操作。生成的代码更简单,因为您已经有了该行,并且只需要再索引一次。

标签: python arrays arraylist multidimensional-array


【解决方案1】:

底部附近的price_morning[i[0]]price_morning[i[1]]price_morning[i[2]] 是您的问题。

方括号中的i[0] 部分将在第一次运行时变为0[0]ints 不可下标,这解释了您的错误。

你只需要稍微移动括号:

price_morning[i][0]
price_morning[i][1]
price_morning[i][2]

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 2019-05-10
    • 2022-07-11
    • 1970-01-01
    • 2019-06-28
    • 2010-11-06
    • 2021-03-22
    • 2023-01-03
    • 1970-01-01
    相关资源
    最近更新 更多