银行有以下汇率:83.5($到tzsh),86.8(tzsh到$)。客户希望反复从美元到先令交换1000美元,反之亦然。开发一个简单的程序(用任何语言),以显示客户最终交换零的数量。
我是Python新手,我确信我的代码有问题:
x=0
y=1000
while x<1000:
x=(83.5*y)/86.8
print x
y=x
答案 0 :(得分:4)
问题是它只接近但实际上从未达到0.因此,您可能希望将其设置为小于1,或者根据您的要求检查它何时真正接近0。
balance = 1000
transactions = 0
while balance > 1:
shillings = balance * 83.5
balance = shillings / 86.8
transactions += 1
print(transactions, balance)
输出:
179 0.9701710363275966
因此,在交易编号179上,余额将低于1美元。
如果您想计算从$到先令的转换,并将其转换为两个交易,而不是transactions += 1
,请使用transactions += 2
答案 1 :(得分:3)
我的答案将偏离Ashish的答案,因为他认为从$到tzsh和tzsh到$作为1交易的交换,而我的方法将$ -to-tzsh和tzsh-to-$视为单独的交易:
i = 0
currency = 1000
while currency > 1:
if i % 2 == 0: # if converting from $ to tzsh
currency = 83.5 * currency
else: # if converting from tzsh to $
currency = currency / 86.8
i += 1
print(i)
结果:
358
答案 2 :(得分:1)
在你的代码中,你将陷入无休止的循环,因为条件永远不会实现。在这里,你需要改变条件来检查$是否留给你。
li.rating__item rating__rated