为什么它从列表[-1]而不是列表[0]开始计算此列表中的元素?(Python 3)

为什么它从列表[-1]而不是列表[0]开始计算此列表中的元素?(Python 3),python,list,python-3.x,indexing,Python,List,Python 3.x,Indexing,(如果我先显示代码,则更容易解释) 它确实像预期的那样返回了“b”,所以我不明白为什么键[1]存在,但当键和cA都有2个元素时,cA[1]不存在。它为什么会这样做?有没有办法修复/更改它 您的列表中只有一个元素: cA = random.sample(keys, 1) 您要求的是长度为1的随机样本 -1有效,因为它是相对于结束的索引。对于长度为1的列表,listobj[-1]是与listobj[0]相同的对象;最后一个元素也是第一个元素 keys是一个包含两个元素的列表,因此keys[0]和k

(如果我先显示代码,则更容易解释)


它确实像预期的那样返回了“b”,所以我不明白为什么键[1]存在,但当键和cA都有2个元素时,cA[1]不存在。它为什么会这样做?有没有办法修复/更改它

您的列表中只有一个元素:

cA = random.sample(keys, 1)
您要求的是长度为1的随机样本

-1
有效,因为它是相对于结束的索引。对于长度为1的列表,
listobj[-1]
是与
listobj[0]
相同的对象;最后一个元素也是第一个元素


keys
是一个包含两个元素的列表,因此
keys[0]
keys[1]
都存在。

您的列表中只有一个元素:

cA = random.sample(keys, 1)
import random
inventory = 100
while True:
    print('inventory: $' + str(inventory))
    print('how much do you wager?')
    wager = input()
    keys = ['a', 'b']
    cA = random.sample(keys, 1)
    print('pick "a" or "b"')
    guess = input()
    if guess == cA      <------------ cA has the element that is the correct wager
        inventory += int(wager)     
    else:
        inventory -= int(wager)
您要求的是长度为1的随机样本

-1
有效,因为它是相对于结束的索引。对于长度为1的列表,
listobj[-1]
是与
listobj[0]
相同的对象;最后一个元素也是第一个元素

keys
是一个包含两个元素的列表,因此
keys[0]
keys[1]
都存在。

import random
import random
inventory = 100
while True:
    print('inventory: $' + str(inventory))
    print('how much do you wager?')
    wager = input()
    keys = ['a', 'b']
    cA = random.sample(keys, 1)
    print('pick "a" or "b"')
    guess = input()
    if guess == cA      <------------ cA has the element that is the correct wager
        inventory += int(wager)     
    else:
        inventory -= int(wager)
存货=100 尽管如此: 打印('存货:$'+str(存货)) 打印('你赌多少?') 下注=输入() 键=['a','b'] cA=随机样本(键,1) 打印('选择“a”或“b') 猜测=输入() 如果猜测==cA
import random
存货=100
尽管如此:
打印('存货:$'+str(存货))
打印('你赌多少?')
下注=输入()
键=['a','b']
cA=随机样本(键,1)
打印('选择“a”或“b')
猜测=输入()

如果guess==cA,则负索引是一种Python约定,用于从列表末尾向后计数。给定
a=[1,2,3]
a[-1]
为3。在你的例子中,你的列表只有一个项目,所以<代码> A[-1 ] < /Cord>是一个项目:与<代码> A[0 ] < /代码>相同。没有公平的编辑你的答案来添加我写评论的东西,Martijn!此外,负索引是一种Python约定,用于从列表末尾向后计数。给定
a=[1,2,3]
a[-1]
为3。在你的例子中,你的列表只有一个项目,所以<代码> A[-1 ] < /Cord>是一个项目:与<代码> A[0 ] < /代码>相同。没有公平的编辑你的答案来添加我写评论的东西,Martijn!实际上(正如Martijn Pieters指出的)我的问题是我在应该放…(键,2)的时候放了cA=random.sample(键,1),但实际上我用了cA而不是键,因为我希望它是随机的(因此是猜测),但谢谢你,很抱歉。还在喝我早上的咖啡:)如果你能做得更多,而不仅仅是抛出一些代码,你的答案会更好。添加一个解释,解释为什么你的代码版本更好,以及你改变了什么。事实上(正如Martijn Pieters指出的)我的问题是我把cA=random。示例(键,1)当我应该放…(键,2)时,但我实际上用cA代替了键,因为我希望它是随机的(因此猜测),但谢谢你,对此感到抱歉。还在喝我早上的咖啡:)如果你能做得更多,而不仅仅是抛出一些代码,你的答案会更好。添加一个解释,解释为什么你的代码版本更好,以及你改变了什么。没有,我已经意识到这是我的问题。没有,我已经意识到这是我的问题