是我,您友好的Python新手!
我正在研究此程序,并且试图弄清楚如果数字超过某个阈值或者用户输入的数字以外的其他数字来使该程序停止运行,然后再次尝试,该程序如何停止。
这是我到目前为止所拥有的:
def ticket_a_sales_calculation(section_a_ticket_purchased):
section_a_sales = section_a_ticket_purchased * 20
return section_a_sales
def ticket_b_sales_calculation(section_b_ticket_purchased):
section_b_sales = section_b_ticket_purchased * 15
return section_b_sales
def ticket_c_sales_calculation(section_c_ticket_purchased):
section_c_sales = section_c_ticket_purchased * 10
return section_c_sales
def total_sales_calculation(ticket_a_sale, ticket_b_sale, ticket_c_sale):
total_sales = ticket_a_sale + ticket_b_sale + ticket_c_sale
return total_sales
def sales_report(ticket_a_sales, ticket_b_sales, ticket_c_sales, sales_totals):
print("Ticket A Sales: $" + format(ticket_a_sales, ",.2f"))
print("Ticket B Sales: $" + format(ticket_b_sales, ",.2f"))
print("Ticket C Sales: $" + format(ticket_c_sales, ",.2f"))
print("Total Sales: $" + format(sales_totals, ",.2f"))
def main():
ticket_a_purchased = int(input("Please enter the amount of tickets sold for section A: "))
if ticket_a_purchased > 300:
print("Number exceeds amount of available seats")
ticket_b_purchased = int(input("Please enter the amount of tickets sold for section B: "))
if ticket_b_purchased > 500:
print("Number exceeds amount of available seats")
ticket_c_purchased = int(input("Please enter the amount of tickets sold for section C: "))
if ticket_c_purchased > 200:
print("Number exceeds amount of available seats")
ticket_a_sales = ticket_a_sales_calculation(ticket_a_purchased)
ticket_b_sales = ticket_b_sales_calculation(ticket_b_purchased)
ticket_c_sales = ticket_c_sales_calculation(ticket_c_purchased)
total_sales = total_sales_calculation(ticket_a_sales,ticket_b_sales,ticket_c_sales)
sales_report(ticket_a_sales, ticket_b_sales, ticket_c_sales, total_sales)
main()
main()
中的if语句正在打印我想要的内容,但是我想要做的是让程序在某些条件下停止。我知道while
或for
循环会有所帮助,但我不知道如何设置它。
我最后尝试的是:
seats_a = True
while True:
if seats_a > 300:
print("Number exceeds amount of available seats")
elif seats_a < 300:
continue
那根本不起作用。
这时我很茫然。有人能向正确的方向推我吗?我觉得if
语句不是正确的方法。我觉得使用while
循环会更好,并且可以为我提供所需的结果。
上帝,我希望这是有道理的。
谢谢大家!
答案 0 :(得分:2)
此习语应在以下情况下起作用:
while True:
ticket_a_input = input("Please enter the amount of tickets sold for section A: ")
if not ticket_a_input.isdigit():
print("Ticket amount must be a number")
continue
if int(ticket_a_input) > 300:
print("Number exceeds amount of available seats")
continue
ticket_a_purchased = int(ticket_a_input)
break
我们在这里所做的是使用while True
无条件地无限循环。然后,根据用户输入的内容,
continue
返回到循环的开头ticket_a_purchased
和break
设置为循环外。这种成语适用于大多数“条件输入”,其中输入可能是有效的,也可能不是有效的,并且您想一直询问直到有效,但是对于其他情况,它很少是最佳解决方案。只要有合理的可能,您都希望尝试一个while
循环,其实际条件可以单独满足。如果这样做,则需要非常小心,以确保通过循环的每条可能路径都以一种或另一种方式被覆盖,否则您将发现自己处于牢不可破的循环中。
答案 1 :(得分:1)
您在正确的轨道上。 while
循环绝对是正确的方法,毕竟,您希望在某些情况为真(尚未超过阈值并且用户尚未输入非法输入)的情况下执行某些操作
但是,您尝试了continue
-这导致循环停止当前迭代并从循环的下一个迭代开始。那不是您想要的,您似乎想要break
也会停止当前迭代,但随后在当前循环(或更普遍地说,当前块)之外继续执行程序。
此外,您将True
分配给seats_a
,但随后继续使用相同的变量来保存其名称,即数字。
答案 2 :(得分:0)
您需要recentFile.FullName
,它将立即停止其余代码的执行,您可以选择break
。您将能够检查所有条件,并使用elif
,可以确保当至少一种座位类型不再可用时,循环将停止。在这种情况下,在座位仍然可用的情况下,您甚至不需要将break
与elif
结合使用。那是因为continue
之后的内容将不会执行。此外,在您的if
中,我将指出哪些座位不可用(a,b或c)
仅当至少一种类型的座位不再可用时,循环才会仅停止。