我对python的这项作业有些怀疑。该练习包括以下内容:
这辆公共汽车有一个乘客进出控制系统,用于监视它所载的乘客人数,从而检测出何时容量过大。
在每个停靠点处,乘客的进出均由一个由两个整数组成的元组表示。
bus_stop = (in, out)
止损的连续性由这些元组的列表表示。
stops = [(in1, out1), (in2, out2), (in3, out3), (in4, out4)]
目标:
- 使用列表,元组
- 使用while / for循环
- 使用最小,最大,长度
- 使用平均值,标准差
任务:
- 计算停车次数。
- 为变量分配一个列表,其元素为每个车站(进出)的乘客人数,
- 找到公共汽车的最大占用空间。
到目前为止,我已经提出了这段代码,但是它没有返回任何内容,因此,由于我对python的经验不足,我肯定做错了。
bus_is_full = False
bus_capacity = 0
stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
while not bus_is_full == True:
for stop in stops:
bus_capacity = stops()
if bus_capacity == 50:
bus_is_full = True
stops +=1
elif bus_capacity < 50:
stops +=1
print(bus_capacity)
答案 0 :(得分:0)
下面的代码在容量超过50(实际人口56)的第3个停靠点停靠
bus_is_full = False
bus_capacity = 0
stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
stops_count = 0 # count the number of bust stops till capacity limit reached (including this stop)
for stop in stops:
bus_capacity += stop[0] - stop[1] # update tot bus_capacity with change in current bus stop (e.g if (13, 7) -> +6 people added)
if bus_capacity >= 50:
bus_is_full = True
stops_count += 1
break
elif bus_capacity < 50:
stops_count += 1
print(bus_capacity)
print(stops_count)
答案 1 :(得分:0)
您可以将元组转换为列表。
bus_is_full = False
bus_capacity = 0
stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
number_stops = len(stops)
print("The number of stops is : {0}\n".format(bus_capacity))
i=0
while i < number_stops :
for stop in stops:
l = list(stop)
in_i = l[0]
out_i = l[1]
print("For the {0} stop, {1} passengers entered and {2} passengers left the bus".format(i, in_i, out_i) )
i += 1
答案 2 :(得分:0)
这里是写Sultan1991说的话的一种稍微简单的方法
bus_capacity = 0
stops = [(20, 0), (13, 7), (40, 10), (1, 20)]
num_stops = 0
for on, off in stops:
bus_capacity += on - off
num_stops += 1
if bus_capacity >= 50:
break
print("Bus capacity:", bus_capacity)
print("Number of stops:",num_stops)
也要注意:这样的循环在大型数据集上并不是特别有效。因此,如果您要处理的数据不仅限于此,我建议您查看numpy
或pandas
库,因为它们可以显着加快并减少此类操作所需的内存。