票价计划

时间:2019-03-07 11:36:35

标签: python

我正在在线开发一些程序,以测试我对Python的知识并提高水平,而我目前仍在执行一项任务,该任务要求我编写一个程序,询问用户是否要了解某款产品的价格。票证,如果选择“否”,则程序退出。如果选中,当前有效。如果选择“是”,则程序将继续。然后,它将提示用户输入目的地,并询问他们是否有资格享受折扣,具体取决于他们的输入,该地点的价格以及是否有资格享受折扣。

我对为什么我的程序未在控制台中显示结果有疑问,我认为这与if / else语句有关,是否可能有更好的方法来做到这一点?只是我的语法不正确?

该程序向用户显示费用后,我要它询问用户是否要查找另一张票的价格,我使用了“退出”,但不确定他们如何输入“是” '返回程序顶部。

非常感谢我提供的更多帮助或技巧,

谢谢!

下面是我正在使用的当前代码。

price = input("Do you want to wish to find the price of a ticket? 
(Yes/No): ")
if price == 'No':
  exit()
place = input("Do you want to travel to London or New York?: ")
discountstatus = input("Are you eligible for discount (Yes/No): ")

def ticketPrice(place, discountstatus):
    if place == 'London' & discountstatus == 'Yes':
       print("£170.47")
    else:
       print("£222.40")
    if place == 'New York' & discountstatus == 'Yes':
       print("£350.30")
   else:
       print("£420.82")

anotherticket = input("Do you want to find the price of another 
ticket? (Yes/No): ")
if anotherticket == 'No':
   exit()
ticketPrice(place, discountstatus)

4 个答案:

答案 0 :(得分:2)

在Python中, ListView lv = (ListView) myView.findViewById(R.id.listview); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getActivity(), "This is my Toast message!",Toast.LENGTH_LONG).show(); } }); 是按位运算符-逻辑'and'运算符的拼写非常简单,&

您的代码中还有一些其他错误...多数是逻辑错误,因此,由于这是一种练习,我让您自行查找和修复它们,但是其中之一是设计错误:您的{{ 1}}函数不应显示结果,而应返回结果(并让调用者执行他想做的任何事情)。这被称为“关注点分离”-您的“业务领域”层(此处为and函数)对UI层一无所知,因此您可以将其与任何UI一起使用(或完全不使用UI)-认为是cron工作等)。

答案 1 :(得分:1)

我在您的代码中看到了一些问题:

  1. 将函数def ticketPrice(place, discountstatus):放在最顶部。仅当您像ticketPrice(any_place, any_discountstatus)这样调用时才执行。功能资源:https://www.tutorialspoint.com/python/python_functions.htm

  2. 然后,该人员在输入地点和折扣状态后需要调用它。 (在那里,您实际定义了函数。使用ticketPrice(place, discountstatus)

  3. 对其进行调用。
  4. 在python中获取“和”,您写的是and而不是&https://www.tutorialspoint.com/python/python_basic_operators.htm,然后各节:PythonLogicalOperators

  5. 如果用户将discountstatus设置为No,会发生什么。也许您需要嵌套if语句。 https://www.tutorialspoint.com/python/nested_if_statements_in_python.htm

  6. 为使此过程无穷多次,可以使用循环。只要用户想要计算东西,就会执行此循环,并在输入No后结束。https://www.tutorialspoint.com/python/python_loops.htm

答案 2 :(得分:0)

您可以将代码包装在一个方法中,然后递归调用它。这样还可以避免调用exit(),而是让程序自行终止。

def ask_travel_questions():
  place = input("Do you want to travel to London or New York?: ")
  discountstatus = input("Are you eligible for discount (Yes/No): ")

  def ticketPrice(place, discountstatus):
      if place == 'London' & discountstatus == 'Yes':
         print("£170.47")
      else:
         print("£222.40")
      if place == 'New York' & discountstatus == 'Yes':
         print("£350.30")
     else:
         print("£420.82")

  anotherticket = input("Do you want to find the price of another 
  ticket? (Yes/No): ")
  if anotherticket=="Yes":
    ask_travel_questions()  # Recursively call for more information  

price = input("Do you want to wish to find the price of a ticket? 
(Yes/No): ")
if price == 'Yes':
  ask_travel_questions()

请注意,我没有调试代码或任何东西,只是对其进行了重构。因此可能仍然存在一些问题。来自bruno desthuilliers的注释绝对可以用于进一步改善代码段。

答案 3 :(得分:0)

以下是代码中的一些错误。

1)您想反复从用户那里获取输入。因此需要添加while循环无限次,直到用户想要退出。

2)在python中,if-condition的逻辑运算符AND用作and而不是&

3)您需要添加else-if条件(在python中为elif)以显示价格,否则,如果用户插入位置London或反之亦然,第二个条件块的else部分也会执行

4)您正在将地点和折扣状态值用作ticketPrice()函数中的输入。因此不需要在函数中传递参数。

def ticketPrice():
    place = input("Do you want to travel to London or New York?: ")
    discountstatus = input("Are you eligible for discount (Yes/No): ")
    if place == 'London' and discountstatus == 'Yes':
       print("£170.47")
    elif place == 'London' and discountstatus == 'No':
       print("£222.40")
    elif place == 'New York' and discountstatus == 'Yes':
       print("£350.30")
    else:
       print("£420.82")

while(True):
    ticketPrice()
    anotherticket = input("Do you want to find the price of another ticket? (Yes/No): ")
    if anotherticket == 'No':
       exit()

输出:

enter image description here