Python код программы с использованием FOR l oop не работает - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужно написать программу, использующую FOR l oop, чтобы попросить у пользователя 7 депозитов. Когда пользователь вводит сумму депозита, ему необходимо обновить баланс, используя концепцию накопления.

Кроме того, ведите подсчет количества депозитов, превышающих или равных 1000 долларов, от 500 до 999 долларов, от 100 до 499 долларов и от 0 до 99. Выходные данные = отображение количества в каждом из приведенных выше группы и окончательный баланс по всем депозитам.

Проблема: последний введенный номер (депозит) является единственным регистром

ammount1000orover = 0
amount500to999 = 0
amount100to499 = 0
less99 = 0
total = 0

for count in range(7):
 deposit = int(input("Please enter your deposit amount: "))

if deposit >= 1000:
      ammount1000orover + 1
      total=total + deposit

if deposit>=500 and deposit<=999:
     amount500to999 = amount500to999 + 1
     total=total + deposit

if deposit>= 100 and deposit<=499:
     amount100to499 = amount100to499 + 1
     total=total + deposit

if deposit>=0 and deposit<=99:
     less99 = less99 + 1
     total=total + deposit

print("You have "+str(ammount1000orover)+" deposit over  or equal to 1000 dollars.")
print("You have "+str(amount500to999)+" deposit between 500 and 999 dollars.")
print("You have "+str(amount100to499)+" deposit between 100 and 499 dollars. ")
print("You have "+str(less99)+" deposit below 100 dollars.")
print("Your balance is : "+str(total))

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

пожалуйста, проверьте ваш отступ, ваши петли if должны быть внутри для l oop не снаружи. Это должно выглядеть примерно так

ammount1000orover = 0
amount500to999 = 0
amount100to499 = 0
less99 = 0
total = 0

for count in range(7):
   deposit = int(input("Please enter your deposit amount: "))

   if deposit >= 1000:
       ammount1000orover += 1
       total=total + deposit

   if deposit>=500 and deposit<=999:
       amount500to999 = amount500to999 + 1
       total=total + deposit

   if deposit>= 100 and deposit<=499:
       amount100to499 = amount100to499 + 1
       total=total + deposit

   if deposit>=0 and deposit<=99:
       less99 = less99 + 1
       total=total + deposit

print("You have "+str(ammount1000orover)+" deposit over  or equal to 1000 dollars.")
print("You have "+str(amount500to999)+" deposit between 500 and 999 dollars.")
print("You have "+str(amount100to499)+" deposit between 100 and 499 dollars. ")
print("You have "+str(less99)+" deposit below 100 dollars.")
print("Your balance is : "+str(total))
0 голосов
/ 09 апреля 2020

В этом случае, я бы порекомендовал использовать операторы elif, чтобы сэкономить много текста. Кроме того, поскольку деньги делятся на диапазоны, вы теряете определенные c суммы вклада, хотя у вас все еще есть общая сумма. Другой способ решить вашу проблему - это так:

_1000_plus = 0
_500_to_999 = 0
_100_to_499 = 0
under_99 = 0
deposits = []  # if you keep a list of deposits then you won't lose that data
for i in range(7):
    deposit = float(input("Please enter your deposit amount: "))  # use float because the user might try to enter cents
    deposits.append(deposit)
    if deposit < 100:
        under_99 += 1
    elif deposit < 500:  # elif is what you want to use. It saves lots of typing
        _100_to_499 += 1
    elif deposit < 1000:
        _500_to_999 += 1
    else:
        _1000_plus += 1

print(f"You have {_1000_plus} deposit over or equal to 1000 dollars.")
print(f"You have {_500_to_999} deposit between 500 and 999 dollars.")
print(f"You have {_100_to_499} deposit between 100 and 499 dollars. ")
print(f"You have {under_99} deposit below 100 dollars.")
print(f"Your balance is : ${sum(deposits):.2f}")  # writes sum of deposits with 2 decimal points
0 голосов
/ 09 апреля 2020

В текущей версии вашего кода все ваши операторы if находятся за пределами for l oop, что означает, что они будут выполняться только для последнего пользовательского ввода (discount), так как это будет быть значением discount, которое сохраняется после завершения l oop.

Это можно увидеть на примере:

Please enter your deposit amount: 1
Please enter your deposit amount: 2
Please enter your deposit amount: 3
Please enter your deposit amount: 4
Please enter your deposit amount: 5
Please enter your deposit amount: 6
Please enter your deposit amount: 7
You have 0 deposit over  or equal to 1000 dollars.
You have 0 deposit between 500 and 999 dollars.
You have 0 deposit between 100 and 499 dollars. 
You have 1 deposit below 100 dollars.
Your balance is : 7

Вместо этого вам нужно сделать отступ в if утверждений таковы, что они находятся внутри for count in range(7) l oop. Вам также необходимо проверить содержимое ваших операторов if, поскольку они не увеличивают счетчик ammount1000orover, как вы ожидаете. Вы можете использовать оператор +=, чтобы упростить их, например:

for count in range(7):                                                          
    deposit = int(input("Please enter your deposit amount: "))                  

    if deposit >= 1000:                                                         
        ammount1000orover += 1                                                  
        total=total + deposit                                                   

    if deposit >= 500 and deposit <= 999:                                           
        amount500to999 += 1                                                     
        total += deposit                                                        

    if deposit >= 100 and deposit <= 499:                                          
        amount100to499 += 1                                                     
        total += deposit                                                        

    if deposit >= 0 and deposit <= 99:                                              
        less99 += 1                                                             
        total += deposit

Тогда результат будет таким, как вы ожидаете:

Please enter your deposit amount: 10001
Please enter your deposit amount: 501
Please enter your deposit amount: 101
Please enter your deposit amount: 11
Please enter your deposit amount: 2
Please enter your deposit amount: 3
Please enter your deposit amount: 4
You have 1 deposit over  or equal to 1000 dollars.
You have 1 deposit between 500 and 999 dollars.
You have 1 deposit between 100 and 499 dollars. 
You have 4 deposit below 100 dollars.
Your balance is : 10623
...