【问题标题】:appending user input with list issue使用列表问题附加用户输入
【发布时间】:2020-01-09 00:59:57
【问题描述】:

我正在进行一项涉及使用 python 制作小型杂货应用程序的练习。这是描述:

编写一个程序来跟踪当前的杂货清单和当前的储藏室物品。它应该要求用户询问他们从购物清单中购买了哪些物品。如果他们已经购买了该物品,请从杂货清单中删除该物品并将该物品添加到食品储藏室物品列表中。

我已尝试开发此功能,但用户输入不会影响列表。

print("GROCERY LIST APP")
grocerylist = ["Apple", "Onion", "Flour"]
print("You have items in your grocery list:", grocerylist)
updatedgrocerylist = []
itemsinpantry = []

userinput = input("Have you bought Apple?")
userinput2 = input("Have you bought Onion?")
userinput3 = input("Have you brought Flour?")

if userinput == "Yes" or userinput == "yes":
    itemsinpantry.append('Apple')

elif userinput == "No" or userinput == "no":
    updatedgrocerylist.append('Apple')

elif userinput2 == "Yes" or userinput2 == "yes":
    itemsinpantry.append('Onion')

elif userinput2 == "No" or userinput2 == "no":
    updatedgrocerylist.append('Onion')

elif userinput3 == "Yes" or userinput3 == "yes":
    itemsinpantry.append('Flour')

elif userinput3 == "No" or userinput3 == "no":
    updatedgrocerylist.append('Flour')

print("Your updated grocery list:", updatedgrocerylist)
print("Items in the pantry:", itemsinpantry) 

我希望程序根据用户的决定将水果附加到列表中。

【问题讨论】:

  • 您的输入是什么以及它会产生什么输出
  • 我的输入是是,否,是。我的输出是您更新的购物清单:[],储藏室中的物品:['Apple']。很奇怪吧? ...
  • 你的逻辑是错误的:而不是 if ... elif ... elif... 你应该使用 if ... else/if ...else/if ... else 因为你可以买苹果、洋葱和面粉。目前您只检查是否购买了苹果。
  • 你在输入什么excatly?这些, 和空格实际上在输入中吗?您是否随时按回车键?请澄清。
  • 你明白 if 和 elif 的区别吗?

标签: python


【解决方案1】:

Yes, No, Yes 的输出之所以如此,是因为您的嵌套 if 结构。 一旦程序接受第一个变量“userinput”,它将跳过其他elif 语句并转到底部的两个print 函数。 我提供了一个可能的解决方案:

print("GROCERY LIST APP")
grocerylist = ["Apple", "Onion", "Flour"]
print("You have items in your grocery list:", grocerylist)
updatedgrocerylist = []
itemsinpantry = []

userinput = input("Have you bought Apple?")
if userinput == "Yes" or userinput == "yes":
    itemsinpantry.append('Apple')
elif userinput == "No" or userinput == "no":
    updatedgrocerylist.append('Apple')

userinput2 = input("Have you bought Onion?")
if userinput2 == "Yes" or userinput2 == "yes":
    itemsinpantry.append('Onion')
elif userinput2 == "No" or userinput2 == "no":
    updatedgrocerylist.append('Onion')

userinput3 = input("Have you brought Flour?")
if userinput3 == "Yes" or userinput3 == "yes":
    itemsinpantry.append('Flour')
elif userinput3 == "No" or userinput3 == "no":
    updatedgrocerylist.append('Flour')

希望这会有所帮助!

【讨论】:

  • 加上最后的两个print ;)
  • 感谢您的解释!这样的菜鸟错误。帮了我很多! :)
【解决方案2】:

找到更正的代码

print("GROCERY LIST APP")
grocerylist = ["Apple", "Onion", "Flour"]
print("You have items in your grocery list:", grocerylist)
updatedgrocerylist = []
itemsinpantry = []

userinput = input("Have you bought Apple?")
userinput2 = input("Have you bought Onion?")
userinput3 = input("Have you brought Flour?")

if userinput == "Yes" or userinput == "yes":
    itemsinpantry.append('Apple')

else:
    updatedgrocerylist.append('Apple')

if userinput2 == "Yes" or userinput2 == "yes":
    itemsinpantry.append('Onion')

else:
    updatedgrocerylist.append('Onion')

if userinput3 == "Yes" or userinput3 == "yes":
    itemsinpantry.append('Flour')

else:
    updatedgrocerylist.append('Flour')

print("Your updated grocery list:", updatedgrocerylist)
print("Items in the pantry:", itemsinpantry) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2020-10-19
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    相关资源
    最近更新 更多