gpt4 book ai didi

python - 如何解决 Python 中的 i++ 循环错误?

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:53 25 4
gpt4 key购买 nike

我当前的代码出现以下错误:IndexError: list index out of range 所以我想知道是否有任何方法可以在 Python 中使用类似于 i++ for 循环的 java 代码打印“名称” + 来自列表的 iten,用于列表中的每个 iten,位置均匀。

抱歉,如果这看起来有点令人困惑,但作为初学者很难解释某些事情:p

例如:

i = 0
"name" + list[0]
i = 1
"price" + list[1]
i = 2
"name" + list[2]

代码:

    import pickle


list1 = []
ans = " "

class Product:
def __init__(self, name, price):
self.name = name
self.price = price


while ans != 'no':
ans = input("Would you like to add a new product, 'yes' or 'no': ")
if ans == 'no':
break
if ans == 'yes':
name = input("What is your product name?")
price = input("What is your product price?")
list1.append(name)
list1.append(price)


output = open("save1.pkl", 'wb')
pickle.dump(list1, output,pickle.HIGHEST_PROTOCOL)

output.close()

print(" ")

inputFile = open("save1.pkl", 'rb')
list2 = pickle.load(inputFile)
inputFile.close()

for i in range(0,10):
print("Name:" + list2[i] + " " + "Price:" + list2[i + 1])

最佳答案

看起来你有一个列表,其中所有偶数索引都是name,奇数索引是price .您不希望或不需要在此处建立索引,因为 Python 对此问题的解决方案比 C 好得多。您可以将扩展切片与 zip 相结合,以在本地成对地迭代它们:

for name, price in zip(list2[::2], list2[1::2]):
print("Name:" + name + " " + "Price:" + price)

list2[::2] 获取从头到尾的所有其他元素,而 list2[1::2] 获取从索引 1 到结束。 zip 然后从每个切片返回成对值的 tuple,因此您可以在索引 0 和 1 处获得值作为您的第一个 nameprice、2 和 3 给出您的第二个 nameprice 等。我们在循环本身中将它们解压缩为有意义的名称,而不是使用索引list2 具有神秘的含义,很明显我们已经有了名称和价格。

关于python - 如何解决 Python 中的 i++ 循环错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com