我正在在线开发一些程序,以测试我对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)
答案 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)
我在您的代码中看到了一些问题:
将函数def ticketPrice(place, discountstatus):
放在最顶部。仅当您像ticketPrice(any_place, any_discountstatus)
这样调用时才执行。功能资源:https://www.tutorialspoint.com/python/python_functions.htm
然后,该人员在输入地点和折扣状态后需要调用它。 (在那里,您实际定义了函数。使用ticketPrice(place, discountstatus)
在python中获取“和”,您写的是and
而不是&
。 https://www.tutorialspoint.com/python/python_basic_operators.htm,然后各节:PythonLogicalOperators
如果用户将discountstatus设置为No,会发生什么。也许您需要嵌套if语句。 https://www.tutorialspoint.com/python/nested_if_statements_in_python.htm
为使此过程无穷多次,可以使用循环。只要用户想要计算东西,就会执行此循环,并在输入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()
输出: