2016-08-23 8 views
0

データの質問に戻ると、ユーザーが間違った番号を入力しています。電話料金の計算(Python)

は私が間違った番号が

import math 

p=float(input('Please enter the price of the phone: ')) 
print('') 
data=int(input('Enter the amount of the data you will use, 1 gig, 3 gigs, 6 gigs: ')) 
tax=p*.0925 
Total=p+tax 
print('') 

print ('If your phone cost',p,',the after tax total in Tennessee is',round(Total,2)) 
print('') 
if data==1: 
    datap=30 
    print('The price of one gig is $30.') 
elif data==3: 
    datap=45 
    print('The price of three gig is $45.') 
elif data==6: 
    datap=60 
    print('The price of six gigs is $60.') 
else: 
    print(data, 'Is not an option.') 
    #I need need to know how to return to the question again if incorrect number is entered 

pmt=Total/24 
bill=(datap+20)*1.13 

total_bill=bill+pmt 
print('') 
print('With the phone payments over 24 months of $',round(pmt,2),'and data at $',datap, 
'a month and line access of $20. Your total cost after tax is $',round(total_bill,2)) 

答えて

1

あなたが無限ループに入ると、ユーザは有効な入力を入力した場合にのみ、それから抜け出す必要がありますが入力された場合は、再度質問を返す方法を知っておく必要があります必要があります。

import math 

costmap = {1: 30, 3: 45, 6: 60} 
price = float(input('Please enter the price of the phone: ')) 
datamsg = 'Enter the amount of the data you will use, 1 gig, 3 gigs, 6 gigs: ' 

while True: 

    try: 
     data = int(input(datamsg)) 
    except ValueError: 
     print('must input a number') 
     continue 

    tax = price * .0925 
    total = price + tax 

    print('If your phone cost {}, the after tax total in Tennessee is {}' 
      .format(price, round(total, 2))) 

    try: 
     datap = costmap[data] 
     print('The price of one gig is ${}.'.format(datap)) 
     break 

    except KeyError: 
     print('{} is not an option try again.'.format(data)) 

pmt = total/24 
bill = (datap + 20) * 1.13 
total_bill = bill + pmt 

print('With the phone payments over 24 months of ${}'.format(round(pmt, 2))) 
print('and data at ${} a month and line access of $20.'.format(datap)) 
print('Your total cost after tax is ${}'.format(round(total_bill, 2))) 

また、値をコストに入力をマッピングする辞書を定義することで、あなたのif/else句を簡素化することができます。値が存在しない場合は、キャッチすることができる例外がスローされます。エラーを発行し、ループをもう一度繰り返します。

最後に、http://pep8online.com/のようなpep-8チェッカーでコードを実行することをおすすめします。読みやすいようにコードを書式設定する方法を教えてくれます。現在のところ、あなたのコードはそれよりも読みにくいです。

+0

ありがとうございます、私はコーディングに新しいですし、助けに感謝します。 – todd2323

+0

問題ありません。 –

関連する問題