Пенни, который удваивается в цене каждую секунду в течение 30 секунд.

#python #python-3.x

Вопрос:

Я пишу этот фрагмент кода, в котором вы начинаете с 1 пенни, и он удваивается в течение каждой секунды в течение 30 секунд. Конечный результат составляет 107374182,4 миллиона долларов. Я сделал это самым простым способом, который я знаю. Я недавно начал кодировать с использованием Python 3. Как я могу просто это сделать?

 import time

penny = 0.1

time.sleep(1)
pen1 = penny * 2
print(pen1)

time.sleep(1)
pen2 = pen1 * 2
print(pen2)

time.sleep(1)
pen3 = pen2 * 2
print(pen3)

time.sleep(1)
pen4 = pen3 * 2
print(pen4)

time.sleep(1)
pen5 = pen4 * 2
print(pen5)

time.sleep(1)
pen6 = pen5 * 2
print(pen6)

time.sleep(1)
pen7 = pen6 * 2
print(pen7)

time.sleep(1)
pen8 = pen7 * 2
print(pen8)

time.sleep(1)
pen9 = pen8 * 2
print(pen9)

time.sleep(1)
pen10 = pen9 * 2
print(pen10)

time.sleep(1)
pen11 = pen10 * 2
print(pen11)

time.sleep(1)
pen12 = pen11 * 2
print(pen12)

time.sleep(1)
pen13 = pen12 * 2
print(pen13)

time.sleep(1)
pen14 = pen13 * 2
print(pen14)

time.sleep(1)
pen15 = pen14 * 2
print(pen15)

time.sleep(1)
pen16 = pen15 * 2
print(pen16)

time.sleep(1)
pen17 = pen16 * 2
print(pen17)

time.sleep(1)
pen18 = pen17 * 2
print(pen18)

time.sleep(1)
pen19 = pen18 * 2
print(pen19)

time.sleep(1)
pen20 = pen19 * 2
print(pen20)

time.sleep(1)
pen21 = pen20 * 2
print(pen21)

time.sleep(1)
pen22 = pen21 * 2
print(pen22)

time.sleep(1)
pen23 = pen22 * 2
print(pen23)

time.sleep(1)
pen24 = pen23 * 2
print(pen24)

time.sleep(1)
pen25 = pen24 * 2
print(pen25)

time.sleep(1)
pen26 = pen25 * 2
print(pen26)

time.sleep(1)
pen27 = pen26 * 2
print(pen27)

time.sleep(1)
pen28 = pen27 * 2
print(pen28)

time.sleep(1)
pen29 = pen28 * 2
print(pen29)

time.sleep(1)
pen30 = pen29 * 2
print(pen30)
 

Комментарии:

1. Используйте петлю или что-то более продвинутое: генератор!

2. Пара ссылок, которые могут вам помочь. docs.python.org/3/tutorial/… и docs.python.org/3/tutorial/controlflow.html

3. Два дополнения: пенни обычно не равен 0,1, и здесь следует использовать целые числа, поплавки становятся неточными, если они становятся больше.

4. С точки зрения @KlausD, он подразумевает, что для этой конкретной проблемы не требуется поплавок, поскольку вам не нужно иметь дело с десятичными знаками (при условии, что число представляет собой цент). Для дальнейшего изучения прочитайте о том, как хранится поплавок, чтобы понять, почему это так.

Ответ №1:

используйте цикл (всегда помните-при написании кода, если какой-то код повторяется, используйте цикл или функцию):

 penny = 0.1
for i in range(30):
    time.sleep(1)
    penny *= 2
    print(penny)
 

Комментарии:

1. В этом случае нельзя было бы также написать 0.1 * 2 ** 30

2. да, конечно, но я думаю, что он хочет печатать каждый свой шаг, вот почему

3. Да, также лучше сначала узнать о циклах, чем о магической функции.

Ответ №2:

 total_time = 30
pennies = 1
for i in range (total_time):
    pennies *= 2
dollars = pennies/100
print(dollars)