当前位置: 首页 > 知识库问答 >
问题:

Python循环一直返回错误,我如何修改这个?[重复]

柳钟展
2023-03-14
sandwichType=""
totalCost=0
sandwiches=["Baguette", "Bagel", "Sub", "Wrap", "White"]
sandwichVAL={"Baguette":3.50, "Bagel":2.10, "Sub":3.99, "Wrap":4.15, "White":0.90}
choice=""
while choice!="Baguette" or choice!="Bagel" or choice!="Sub" or choice!="Wrap" or choice!="White":
  choice=str(input("What type of sandwich would you like?\n>Baguette - £3.50\n>Bagel    - £2.10\n>Sub      - £3.99\n>Wrap     - £4.15\n>White    - £0.90\n"))
  if choice!="Baguette" or choice!="Bagel" or choice!="Sub" or choice!="Wrap" or choice!="White":
    print("Unfortunately, that is not a valid choice! Please pick again and remember to capitalise the first letter!")
  else:
    print()
totalCost+=sandwichVAL[choice]
print(totalCost)

此代码不断返回

Unfortunately, that is not a valid choice! Please pick again and remember to capitalise the first letter!

即使选择变量是正确的。我应该进行哪些编辑以使其打印总成本?

共有3个答案

陆文康
2023-03-14

您只需通过以下方式检查选择是否有效:

if choice not in sandwiches:
    print("Unfortunately, ...")
仲霍英
2023-03-14

看看你的逻辑:

if choice != A or choice != B ...

选择只能匹配一个硬编码的选择;对于选择的任何值,此测试必须是True。相反,尝试一些像

if choice not in ["Baguette", "Bagel", "Sub", ...]:

更好的方法是使用您已有的列表:

if choice not in sandwiches:
皇甫飞飙
2023-03-14
if choice!="Baguette" or choice!="Bagel" or choice!="Sub" or choice!="Wrap" or choice!="White":

这种逻辑是不正确的。当这些表达式中的任何一个为真时,分支将被取。例如,如果选择="Bagel",那么(选择!="Sub")==True.

您可能想要s而不是s。更好的是,因为您已经定义了有效三明治的列表,您可以写:

if choice not in sandwiches:
 类似资料:
  • 我怎么能修好它? replaceAll函数中此字符“{”错误。谢谢。

  • 我需要将12小时的时间转换为24小时的格式。 我现在已经把12小时的时间硬编码了,以使事情更简单。 我的逻辑:输入sting 07:05:45PM提取最后2个字符。如果AM check为前两个字符,则为12。。如果是,则将其设置为00,否则按原样输出,如果PM检查前两位数字是否为12。。如果是,请保持原样,如果不是,则在前2位加上12 总线错误:10是我运行代码得到的

  • 我有一个try-catch块,它检查来自Scanner的输入是否为int。但它只是一次又一次地循环询问要发送多少人。。然后说错误:不是一个数字。没有实际提示用户输入不同的数字。 输入int以外的内容时的输出示例。

  • 在一段时间的循环中,我使循环在一次无效输入后不会返回有效的答案,并重复“错误!无效的客户类型。再试一次。”一遍又一遍,直到我关闭程序。如果我第一次输入R或C作为输入,它会正常工作。当我输入其他任何东西时,我会得到错误信息“错误!无效的客户类型。再试一次。”就像我应该是故意的一样。然而,在输入r或c错误之后,我又会再次出现错误,我所做的任何输入都会一遍又一遍地返回错误信息,直到我关闭程序。有人能告诉

  • 顺便说一下,我搜索了一下这种情况,我认为我没有使用数组索引或者错误地使用了错误的指针。另外,我在这里看到了同样的问题,但我想知道为什么代码不能工作,然后自己解决这个问题。非常感谢大家的帮助。

  • 简单Tkinter码 命令提示符错误 我一直在用这个基本代码尝试Tkinter。但是在运行它时,我得到了一个名为Traceback错误的错误。我正在使用Python 3.8.3。