<p>谢谢你的帮助!事实上,我尝试了另一种方法,根据选择将包设置为1或0,效果很好</p>
<p>现在,我的代码如下所示:</p>
<pre><code>def tickettype():
print('Ticket types: \n'
'1. Budget: 500 kr \n'
'2. Economy: 750 kr \n'
'3. VIP: 2000 kr \n')
def options():
print('\nHere are your options: \n'
'1. Add bag (max 1) \n'
'2. Add meal (max 1) \n'
'3. Remove bag \n'
'4. Remove meal \n'
'5. Finalize ticket \n')
tickettype()
tickettype1 = int(input('Choose your ticket type: '))
if tickettype1 == 1:
ticket = 500
elif tickettype1 == 2:
ticket = 750
elif tickettype1 == 3:
ticket = 2000
options()
print('\n'
'Currently you have: \n'
'0 bag(s) registered \n'
'0 meal(s) registered \n')
yourchoice = int(input('Your choice: '))
bag = 0
meal = 0
addbag = 0
addmeal = 0
while yourchoice != 5:
if yourchoice == 1:
bag = 1
bagprice = 200
addbag = str('Bag : 200')
elif yourchoice == 2:
meal = 1
mealprice = 150
addmeal = str('Meal : 150')
elif yourchoice == 3:
bag = 0
elif yourchoice == 4:
meal = 0
else:
print('\n'
'Invalid option. Please try again.')
print('\n'
f'Currently you have: \n{bag} bag(s) registered \n{meal} meal(s) registered')
options()
yourchoice = int(input('Your choice: '))
# When the user press 5:
#EDITED AFTER THIS LINE
#print(f'\nReceipt:\nTicket : {ticket}\n{addbag}\n{addmeal} \nTotal: {ticket+bagprice+mealprice}'
#create a new variable to store Total price, adding mealprice or bagprice only if they are selected else 0 will be added
Total = (mealprice if meal == 1 else 0) + (bagprice if bag == 1 else 0) + ticket
print(f'\nReceipt:\nTicket:{ticket}')
#print bag only if it is selected, bag value will became 1 only if it is selected
if bag == 1:
print(addbag)
# print meal only if it is selected, meal value will became 1 only if it is selected
if meal == 1:
print(addmeal)
# print the Total price
print(f'Total:{Total}')
</code></pre>
<p>但是,它不像我想要的那样打印。例如,如果我选择1号客票并添加一个行李,则输出为:</p>
<pre><code>Receipt:
Ticket : 500
Bag : 200
0
Total: 850
</code></pre>
<p>但我只希望总数是700,我不希望在“Bag”之后的行中出现“0”。它仍然将膳食价格添加到总价中,“0”来自while循环之前的行。我把餐费和餐费的打印字符串放在选项3中,所以我不知道为什么它仍然添加餐费</p>
<p>因此,我希望收据上的内容是:</p>
<pre><code>Receipt:
Ticket : 500
Bag : 200
Total: 700
</code></pre>
<p>有什么办法可以解决这个问题吗?:)</p>