刚开始使用python不到一周。这个练习开始了。我设法在网上找到了这段代码,然后开始掌握它了:
“一只蜗牛落在125厘米井的底部。每天,蜗牛会上升30厘米。但是在晚上,由于壁是湿的,所以在睡觉时滑动20厘米。好吗?
-将问题数据分配给具有代表性名称的变量 井高,每日前进,夜间撤退,累计距离
well_height = 125
daily_advance = 30
night_retreat = -20
accumulated_distance = daily_advance + night_retreat
totalcms = 0
-将0分配给代表解决方案的变量
days = 0
-编写解决问题的代码
snailhasnotescaped = True
while snailhasnotescaped:
totalcms += accumulated_distance
days += 1
if totalcms >= well_height:
snailhasnotescaped = False
-使用print('Days =',days)打印结果
print("Days = ", days, "days")"
现在它问我这一系列问题:
蜗牛的行进距离现在由一个列表定义。
advance_cm = [30, 21, 33, 77, 44, 45, 23, 45, 12, 34, 55]
提高油井需要多长时间? 一天的最大排量是多少?及其最低限度? 白天的平均速度是多少? 白天位移的标准偏差是多少?
有人可以帮我吗? 预先谢谢你
答案 0 :(得分:0)
首先,假设在第X天到达顶部之前,蛇有15厘米的距离。他会到达井的顶部吗?显然,由于他在退回20cm之前前进了30cm。请注意,您的代码没有考虑到这一点。我会做这样的事情:
day = 1
while True:
totalcms += daily_advance
if totalcms >= well_height:
break
totalcms -= night_retreat
day += 1
print(day)
请注意,while True
是一种不好的做法。仅当您确定可以打破循环时,这才可以。您可以在此处添加条件,以验证蛇在进入循环之前是否确实能够向前移动。相反,您可以决定一天下来之前先走下来再做while totalcms < well_height
。
您还可以将所有内容包装在函数周围,以便能够更有效地使用它。
下一个问题是模棱两可的。是每天的预付款吗?如果是的话,而不是while循环,只需遍历列表即可(甚至可以解决我们的问题)。对于其他问题,我确定您可以解决!
祝你好运!
答案 1 :(得分:0)
.box {
height: 300px;
border: black;
border-style: dotted;
}
您可以尝试:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</script>
<button onclick="btnclick()">BTN</button>
<div class="container-fluid">
<div class="row">
<div id="box1" class="box col-md-6">Box1</div>
<div id="box2" class="box col-md-6">Box2</div>
<div id="box3" class="box col-md-6" style="display:none;">Box3</div>
</div>
</div>
答案 2 :(得分:0)
所以,这是您拥有的代码:
snailhasnotescaped = True
while snailhasnotescaped:
totalcms += accumulated_distance
days += 1
if totalcms >= well_height:
snailhasnotescaped = False
与现在一样,accumulated_distance
是常数。您预先将其设置为accumulated_distance = daily_advance + night_retreat
。对于新问题,您将无法使用。因此,以下是如何调整您的解决方案以适应您的新问题的顺序:
举起井需要多长时间?
您需要每天计算一次,而不是一次计算accumulated_distance
:
for day_cm in advance_cm:
days += 1
totalcms += day_cm # add however much it travels that day
if totalcms >= well_height:
break # just stop the for loop immediately - we've escaped, therefore we already know what `days` is supposed to be
totalcms -= night_retreat # If we didn't escape, then we'll lose 20cm overnight
如果advance_cm
中的日子不够用,那么您可以在循环结束后检查一下:
if totalcms < well_height:
# do something
一天中最大位移是多少?
好吧,您知道它每天行进多远-您只需要找到一天中的最大距离即可。 Python具有内置功能,可以轻松为您执行此操作:
max_displacement = max(advance_cm)
或者,如果晚上倒退算作总位移,则可能需要更改循环以创建新的位移列表:
displacements = []
for day_cm in advance_cm:
days += 1
totalcms += day_cm
displacements.append(day_cm) # how much did we move during the day
if totalcms >= well_height:
break
totalcms -= night_retreat
displacements[-1] -= night_retreat # remove our fall distance from the last element of the list, where we put how much we moved during the day
然后我们可以从中获取最大位移:
max_displacement = max(displacements)
白天的平均速度是多少?
白天的位移标准偏差是多少?
好吧,您应该知道如何计算平均值。 Python具有内置的sum()
函数来获取列表中所有元素的总和,这很容易:
avg_speed = sum(displacements) / days # unit: cm per day
对于标准偏差,这有点棘手-您需要知道标准偏差公式并进行计算。值得庆幸的是,python的标准库包括statistics
软件包,它可以为您做到这一点!
import statistics
...
std_dev = statistics.stdev(displacements)