我是一名下载狂热者。我下载的大部分内容都是千兆字节,但以兆字节显示。
我想构建一个小的python程序,根据连接速度的快慢来检测下载完成所需的时间。
我在数学方面很糟糕,我不知道在算法中从哪里开始。
它将具有浮点数..并且我确实理解连接速度有时可能非常不稳定,它们可能会上下移动。但它将是近似值。我喜欢数学,但浮点数是一个很大的弱点。
应该有点像这样:
fileSize: raw_input("How big is the file you are downloading? ")
conSpeed: raw_input("How fast is your current connection speed? ")
## Make sure fileSize and conSpeed are floats
print("Your download will finish in "+str(ALGORITHM_VAL)+" .")
# prints no more than 4 digits, not like 1 hour 23423432423424 seconds
感谢帮助人(和女孩),非常感谢!
答案 0 :(得分:0)
使用的基本公式为:estimated_time = file_size / con_speed
请确保玩具在计算时具有一致的单位。例如:如果您的连接速度以兆字节/秒(Mbps)为单位,则文件大小也应为兆字节。
通常1 Gb是1024 Mb或1000 Mb(大约)
如需其他转换率,请查看此图表: http://www.wu.ece.ufl.edu/links/dataRate/DataMeasurementChart.html
请注意,互联网服务提供商通常使用1000作为近似单位而不是1024.
答案 1 :(得分:0)
如果两个输入使用相同的测量单位,则应该是标准的除法操作:
size = raw_input("File size in KB: ")
speed = raw_input("Speed in KB/sec: ")
est = float(size) / float(speed)
print "It will take %f seconds." % est
真的,每当你看到 per 这个词时,例如里程每小时或千字节每秒,你就可以想到除以:里程除以小时,或千字节除以秒。
现在,如果您的文件大小输入采用不同的度量单位(例如兆字节),则需要先将其转换为通用计量单位:
sizeInKb = float(size) * 1024
est = float(sizeInKb) / float(speed)
最后,您可以通过导入datetime
:
print "Estimated Time: %s" % datetime.timedelta(seconds = est)
希望这有帮助!