2017-09-26 43 views
0

先进的道歉,我对Python很陌生。但是,我需要创建一个计算程序,计算一个人在一段时间内可以赚取的金额,如果他的第一天为1美分,第二天为2美分,并且每天持续增加一倍。我知道我应该使用&而循环,我只是不完全知道如何执行它。Python 3 For/While Loops

到目前为止,我有这样的:

day = int(input('How many days did you work?: ')) 
start = 1 
end = day 
amount_start = 0.01 

print() 
print('Day  Amount ($)') 
print('---  ----------') 

for day in range(start, end + 1): 
    amount_end = amount_start * 2 
    for amount_start in (amount_start, amount_end): 
     print(day, amount_end, sep='   ') 

当我跑了,我看到第1天起数为0.02,并复制到每个行两次。任何建议要改变/添加,所以我可以理解这将不胜感激。 谢谢。

回答

0

首先,我要解释一下你的代码做,然后,什么样的代码会做你想要什么。

day = int(input('How many days did you work?: ')) 
start = 1 
end = day 
amount = 0.01 # Start and End shouldn't be a thing 
total = 0 # I think this is what you wanted... the amount will double every time and the total will be increased by the amount every time 

print() 
print('Day  Amount ($)') 
print('---  ----------') 

初始化那里,没有错。现在,我们来看看两个for循环。

for day in range(start, end + 1): 
    amount_end = amount_start * 2 
    for amount_start in (amount_start, amount_end): 
     print(day, amount_end, sep='   ') 

首先,我会建议不要照顾变量的名称。变量day之前已经定义过,但由于它不再用于原来的目的,所以在这里并不重要。

外循环将循环您输入的次数。这里也没有错。
然后,我们将amount_end的值设置为amount_start的当前值的两倍。

现在,让我们来看看内部循环。这里,amount_start的值将通过列表(amount_start, amount_end)
我们将在此循环中循环两次,首先用amount_start保持其初始值,然后用amount_startamount_end的值。
这个循环将是相同

amount_start = amount_start 
print(day, amount_end, sep='   ') 
amount_start = amount_end 
print(day, amount_end, sep='   ') 

然后你可以看到为什么它打印在同一行两次。

为了消除重复,使代码更易读,我建议下面的代码:

day = int(input('How many days did you work?: ')) 
start = 1 
end = day 
amount_start = 0.01 

print() 
print('Day  Amount ($)') 
print('---  ----------') 

for day in range(start, end + 1): 
    amount_end = amount_start * 2 
    print(day, amount_end, sep='   ') 
    amount_start = amount_end 

不要犹豫,问你是否有关于我的回答任何问题。我希望这有助于。

+0

非常感谢您对此的清晰和准确的解释。这对我帮助很大。 –

1

不要窝在for循环

您应该只有一个for循环:

day = int(input('How many days did you work?: ')) 
start = 1 
end = day 
amount = 0.01 # Start and End shouldn't be a thing 
total = 0 # I think this is what you wanted... the amount will double every time and the total will be increased by the amount every time 

print() 
print('Day  Amount ($)') 
print('---  ----------') 

for day in range(start, end + 1): 
    total += amount # Give the person salary 
    print(day, total, sep='   ') # Print the total amount of money earned 
    amount *= 2 # Double the salary 
+0

非常感谢! –