2016-09-23 3 views
0
#Fiery Elsa 
#ID:899525 
#Homework 2, Program 2 


#Initialization 
count=0 
name=input("Enter stock name OR -999 to Quit:") 

#Input 
while name!=-999: 
    count=count+1 
    name=input("Enter stock name OR -999 to Quit:") 
    shares=int(input("Enter number of shares:")) 
    pp=float(input("Enter purchase price:")) 
    sp=float(input("Enter selling price:")) 
    commission=float(input("Enter commission:")) 


#Calculations 
amount_paid=shares*pp 
commission_paid_purchase=amount_paid*commission 
amount_sold=shares*sp 
commission_paid_sale=amount_sold*commission 
profit_loss=(amount_sold - commission_paid_sale) -(amount_paid + commission_paid_purchase) 

#Output 
print("Stock Name:", name) 
print("Amount paid for the stock:  $", format(amount_paid, '10,.2f')) 
print("Commission paid on the purchase: $", format(commission_paid_purchase, '10,.2f')) 
print("Amount the stock sold for:  $", format(amount_sold, '10,.2f')) 
print("Commission paid on the sale:  $", format(commission_paid_sale, '10,.2f')) 
print("Profit (or loss if negative): $", format(profit_loss, '10,.2f')) 

Программные петли, но не выходят на печать при нажатии -999. Что я делаю не так?Не удается вынуть из цикла while

В идеале программа должна позволять пользователю вводить столько раз, сколько он хочет, пока пользователь не будет выполнен. Например: 3 набора входов, приводящих к 3 наборам выходов.

+0

'name' никогда не является' int', вам нужно проверить против строки '«-999'' – AChampion

+0

@AChampion Я попытался „бросить“, но это не сработало –

+1

Can» t реплицировать вашу ошибку ... изменение на '' -999'' завершает цикл для меня (как и '' quit''). – AChampion

ответ

0

Ваша проблема заключается в том, что name является тип string, но вы сравниваете его с -999 который имеет тип int.

Если вы меняете свой цикл на name != "-999", тогда сравнение выполняется. Вам нужно будет повторно обработать ваш код, чтобы заставить его вести себя так, как вам хочется, но это должно быть хорошим началом :)

+0

Я изменил сравнение, чтобы отразить ваши рекомендации, но он все равно не выгоняет меня. Он читает «-999» как название компании. –

+0

Вы можете попробовать сравнить имя.split(), если вы получаете символ новой строки, а также входное значение? –

+0

-999 не выводит вывод - требуется другой набор входов, а затем вывод сообщений –

0

Вам нужно оценить значение имени после каждого ввода.

stock_name = [] # make a list for stock name 
shares = [] # change also all other input variables into list type 

while True: # this will allow you to loop the input part 
    name = input() 
    if name != '-999': # this will evaluate the value of name 
     stock_name.append(name) # this will add your latest name input to the list 
     # Do the same to your other inputs 
    else: 
     break # exit your while loop 

# you need another loop here to do calculations and output 
# I think this is where your count variable should go to index your lists 
+0

Я пробовал это, но он делает имя запаса «-999» –

+0

Каждый раз, когда вы вводите свой имя переменной будет перезаписывать предыдущие данные. Вам нужно изменить его на тип списка. – CpK

0
while name!="-999": #try this one 
    count=count+1 
    name=input("Enter stock name OR -999 to Quit:") 
    shares=int(input("Enter number of shares:")) 
    pp=float(input("Enter purchase price:")) 
    sp=float(input("Enter selling price:")) 
    commission=float(input("Enter commission:")) 
Смежные вопросы