Python 结束后如何打印列表中的所有元素?

Python 结束后如何打印列表中的所有元素?,python,python-3.x,Python,Python 3.x,我的自动售货机程序在添加完所有元素后,并没有打印列表中的所有元素。例如: 费用是50便士 插入的金额为62便士 它应该返回:['10p'],['2p'] 但它只返回:['10p'] 非常感谢您的帮助,我也非常感谢您对改进我的代码的帮助,我对编程非常陌生 prompt_cost = int(input("What are the total cost in pence? ")) prompt_insert_money = int(input("Insert the amount of penc

我的自动售货机程序在添加完所有元素后,并没有打印列表中的所有元素。例如:

  • 费用是50便士
  • 插入的金额为62便士
  • 它应该返回:['10p'],['2p']
  • 但它只返回:['10p']
非常感谢您的帮助,我也非常感谢您对改进我的代码的帮助,我对编程非常陌生

prompt_cost = int(input("What are the total cost in pence? "))
prompt_insert_money = int(input("Insert the amount of pence (max 100p) into the machine: "))
coins = ["50p", "20p", "10p", "5p", "2p", "1p", "0p"]
list = []

for coin in coins:
    pence_change = prompt_insert_money - prompt_cost
    if pence_change < 0:
        missing_amount = prompt_cost - prompt_insert_money
        print("Sorry, you do not have the sufficient amount inserted in!", "You are missing", int(missing_amount), "pence!")
        list.append(coins[6])
        break
    if pence_change == 0:
        list.append(coins[6])
        break
    if pence_change >= 50:
        list.append(coins[0])
        pence_change - 50
        break
    elif pence_change >= 20:
        list.append(coins[1])
        pence_change - 20
        break
    elif pence_change >= 10:
        list.append(coins[2])
        pence_change - 10
        break
    elif pence_change >= 5:
        list.append(coins[3])
        pence_change - 5
        break
    elif pence_change >= 2:
        list.append(coins[4])
        pence_change - 2
        break
    elif pence_change >= 1:
        list.append(coins[5])
        pence_change - 1
        break
print("You have received the following coins:", list)
prompt\u cost=int(输入(“以便士表示的总成本是多少?”)
提示\u insert\u money=int(输入(“在机器中插入便士(最大100便士):)
硬币=[“50便士”、“20便士”、“10便士”、“5便士”、“2便士”、“1便士”、“0便士”]
列表=[]
对于硬币中的硬币:
便士\零钱=提示\插入\货币-提示\成本
如果便士变化小于0:
缺少金额=提示成本-提示插入金额
打印(“对不起,您没有插入足够的金额!”,“您缺少”,int(缺少金额),“pence!”)
列表。追加(硬币[6])
打破
如果便士变化==0:
列表。追加(硬币[6])
打破
如果便士变化>=50:
列表。追加(硬币[0])
零钱-50便士
打破
elif pence_change>=20:
列表。追加(硬币[1])
零钱-20便士
打破
elif pence_change>=10:
列表。追加(硬币[2])
零钱-10便士
打破
elif pence_change>=5:
列表。追加(硬币[3])
零钱-5便士
打破
elif pence_change>=2:
列表。追加(硬币[4])
零钱-2便士
打破
elif pence_change>=1:
列表。追加(硬币[5])
零钱-1便士
打破
打印(“您已收到以下硬币:”,列表)

您在这里所做的只是得到您所需要的第一枚硬币。在最基本的层面上,你要做的是不断地在硬币上迭代,直到
pence\u变化
为0

prompt_cost = int(input("What are the total cost in pence? "))
prompt_insert_money = int(input("Insert the amount of pence (max 100p) into the machine: "))
coins = ["50p", "20p", "10p", "5p", "2p", "1p", "0p"]
lst = []

pence_change = prompt_insert_money - prompt_cost
if pence_change < 0:
    missing_amount = prompt_cost - prompt_insert_money
    print("Sorry, you do not have the sufficient amount inserted in!", "You are missing", int(missing_amount), "pence!")
    lst.append(coins[6])

while pence_change >= 0:
    if pence_change == 0:
        lst.append(coins[6])
        break
    if pence_change >= 50:
        lst.append(coins[0])
        pence_change -= 50
    elif pence_change >= 20:
        lst.append(coins[1])
        pence_change -= 20
    elif pence_change >= 10:
        lst.append(coins[2])
        pence_change -= 10
    elif pence_change >= 5:
        lst.append(coins[3])
        pence_change -= 5
    elif pence_change >= 2:
        lst.append(coins[4])
        pence_change -= 2
    elif pence_change >= 1:
        lst.append(coins[5])
        pence_change -= 1
print("You have received the following coins:", lst)
prompt\u cost=int(输入(“以便士表示的总成本是多少?”)
提示\u insert\u money=int(输入(“在机器中插入便士(最大100便士):)
硬币=[“50便士”、“20便士”、“10便士”、“5便士”、“2便士”、“1便士”、“0便士”]
lst=[]
便士\零钱=提示\插入\货币-提示\成本
如果便士变化小于0:
缺少金额=提示成本-提示插入金额
打印(“对不起,您没有插入足够的金额!”,“您缺少”,int(缺少金额),“pence!”)
一、附加(硬币[6])
当便士变化>=0时:
如果便士变化==0:
一、附加(硬币[6])
打破
如果便士变化>=50:
第一次追加(硬币[0])
零钱-=50便士
elif pence_change>=20:
第一次追加(硬币[1])
零钱-=20便士
elif pence_change>=10:
一、附加(硬币[2])
零钱-=10便士
elif pence_change>=5:
一、附加(硬币[3])
零钱-=5便士
elif pence_change>=2:
一、附加(硬币[4])
零钱-=2便士
elif pence_change>=1:
一、附加(硬币[5])
零钱-=1便士
打印(“您已收到以下硬币:”,lst)
prompt\u cost=int(输入(“以便士表示的总成本是多少?”)
提示\u insert\u money=int(输入(“在机器中插入便士(最大100便士):)
硬币=[“50便士”、“20便士”、“10便士”、“5便士”、“2便士”、“1便士”、“0便士”]
lst=[]
便士\零钱=提示\插入\货币-提示\成本
对于硬币中的硬币:
如果便士变化小于0:
缺少金额=提示成本-提示插入金额
打印(“对不起,您没有插入足够的金额!”,“您缺少”,int(缺少金额),“pence!”)
一、附加(硬币[6])
打破
如果便士变化==0:
打破
如果便士变化>=50:
第一次追加(硬币[0])
零钱-=50便士
elif pence_change>=20:
第一次追加(硬币[1])
零钱-=20便士
elif pence_change>=10:
一、附加(硬币[2])
零钱-=10便士
elif pence_change>=5:
一、附加(硬币[3])
零钱-=5便士
elif pence_change>=2:
一、附加(硬币[4])
零钱-=2便士
elif pence_change>=1:
一、附加(硬币[5])
零钱-=1便士
打印(“您已收到以下硬币:”,lst)

我已经按照您的预期修改了您的代码,

这是因为循环在计算第一个便士金额时立即中断,而在计算剩余便士时,您不会使用新的便士金额再次调用函数。您可能希望尝试递归方法解决此问题。不要调用变量
list
,因为
list
是列表构造函数。除了上述两个建议外,您还需要更改
pence\u change
的初始化和更改方式。现在,每次循环执行时,它都会将
pence\u change
的值设置为两个外部变量,因此每次都会得到相同的结果。解决方案:在开始for loopHi之前放入
pence\u change=prompt\u insert\u money-prompt\u cost
,谢谢Ananth.P。这个解决方案非常有效。我有一个问题,如何才能更好地理解Python?当我练习这样的问题时,我通常会被困好几天而毫无进展。@wonjo继续练习,每当你陷入困境时,先用一个更简单的解决方案,然后一步一步地向前走。请记住,基本原理非常重要。嗨,Prakar Londhe,谢谢你提供了这个解决方案,但是,这个解决方案有一个问题。它表明您每次都收到“[0p]”。我有一个问题要问你,你怎样才能更好地学习Python?我目前正在练习这样的问题,但我经常被卡住,最后在谷歌上搜索了几个小时。每次只搜索[0p],或者用其他硬币搜索[0p]。。如果它与其他硬币也一样,那么我故意把它放在那里,我以为你希望最后一枚硬币是0便士。至于如何更好地掌握python,我建议首先以有组织的方式学习python(任何课程都可以)
prompt_cost = int(input("What are the total cost in pence? "))
prompt_insert_money = int(input("Insert the amount of pence (max 100p) into the machine: "))
coins = ["50p", "20p", "10p", "5p", "2p", "1p", "0p"]
lst = []

pence_change = prompt_insert_money - prompt_cost
for coin in coins:
    if pence_change < 0:
        missing_amount = prompt_cost - prompt_insert_money
        print("Sorry, you do not have the sufficient amount inserted in!", "You are missing", int(missing_amount), "pence!")
        lst.append(coins[6])
        break

    if pence_change == 0:
        break

    if pence_change >= 50:
        lst.append(coins[0])
        pence_change-= 50

    elif pence_change >= 20:
        lst.append(coins[1])
        pence_change-= 20

    elif pence_change >= 10:
        lst.append(coins[2])
        pence_change-= 10

    elif pence_change >= 5:
        lst.append(coins[3])
        pence_change-= 5

    elif pence_change >= 2:
        lst.append(coins[4])
        pence_change-=2

    elif pence_change >= 1:
        lst.append(coins[5])
        pence_change-= 1

print("You have received the following coins:", lst)