我正在尝试为帐户系统创建一个二维数组。阵列的每一层存储有关用户的3条关键信息。添加新用户后,他们输入3条信息,并将其添加到阵列中。然而,它反而说了一些关于“元组”的内容。
我知道元组是他们自己的东西。我不是试图使用元组,只是一个普通的数组。
PS。这是我第一次在stackoverflow上发布一个问题,对于那些躲闪的缩进很抱歉,我无法理解。
accounts = []
accountDetails = [[],[],[]]
quitt = False
while quitt == False:
print("Would you like to:","\n 1. Make an account","\n 2. Check an account","\nPlease enter '1' or '2'")
option = input()
if option == "1":
name = input("Enter the name for your account: ")
accounts.append(name)
print(accounts)
accountNumber = len(accounts)
print("Your account number is ", accountNumber)
accountDetails[0, accountNumber]= input("Please enter your GDP: ")
accountDetails[1, accountNumber] = input("Please enter how much money is in your account: ")
accountDetails[2, accountNumber] = input("Please enter your inflation rate: ")
print(accountDetails)
答案 0 :(得分:1)
变化:
accountDetails[0, accountNumber]= input("Please enter your GDP: ")
accountDetails[1, accountNumber] = input("Please enter how much money is in your account: ")
accountDetails[2, accountNumber] = input("Please enter your inflation rate: ")
为:
accountDetails[0][accountNumber]= input("Please enter your GDP: ")
accountDetails[1][accountNumber] = input("Please enter how much money is in your account: ")
accountDetails[2][accountNumber] = input("Please enter your inflation rate: ")
这是python访问列表列表的方式
答案 1 :(得分:0)
问题在于:
accountDetails[0, accountNumber]
该值0, accountNumber
是两个值的元组。每当你用逗号分隔值时,除了一些特殊情况,比如函数参数,你就会产生一个元组。这是x, y = 1, 2
的工作原理,return spam, eggs
和for i in 1, 2, 4, 8:
等等。
那么,为什么它会告诉你“关于元组的东西”而不仅仅是提出SyntaxError
?因为Python允许你使用元组作为索引,主要用于像numpy提供的那些多维数组。使用numpy 2D数组,arr[i, j]
可以获取i
行和j
列的元素。
但是你没有这里的numpy数组,你有一个普通的list
,并且列表不知道如何处理索引元组。 (事实上,你的列表甚至不知道它是一个列表列表,它只是一个任何事物的列表,你碰巧存储了列表。)
你想要的可能是:
accountDetails[0][accountNumber]
换句话说,您要求列表列表accountDetails
获取其元素0,然后向结果列表询问其元素#accountNumber
。
答案 2 :(得分:0)
在列表 L 的索引 i 中选择元素的表示法是L[i]
。
您似乎在尝试选择语法为L[x, y]
的元素(accountDetails[0, accountNumber]
。
选择内部列表元素的正确方法是L[x][y]
。
它抱怨是因为它认为你试图使用元组(a, b, c...)
来索引列表,而不是预期的整数。