我有一个方法,生成我的乘客数量预订过程。参数是最小和最大乘客人数。在
只有两种情况:
number_of_adults
必须大于0number_of_infants
必须小于或等于number_of_adults
代码如下:
def generate_numbers_of_paxes(min_number=1,max_number=9):
number_of_passengers=random.randint(min_number, max_number)
print(number_of_passengers)
number_of_adults=random.randint(min_number, number_of_passengers)
number_of_youths=random.randint(0, number_of_passengers-number_of_adults)
number_of_children=random.randint(0, number_of_passengers-number_of_adults-number_of_youths)
number_of_infants=random.randint(0, number_of_passengers-number_of_adults-number_of_youths-number_of_children)
number_of_adults+=number_of_passengers-number_of_adults-number_of_youths-number_of_children-number_of_infants
if(number_of_adults<number_of_infants):
difference=number_of_infants-number_of_adults
number_of_infants-=difference
number_of_adults+=difference
return [number_of_adults,number_of_youths,number_of_children,number_of_infants]
numbers_of_paxes=generate_numbers_of_paxes()
for (x,y) in enumerate(numbers_of_paxes):
print(x,y)
这段代码运行得很好,但是正如您所看到的,这一行中存在一些问题
^{pr2}$因为每个年龄组的数字之和并不总是等于number_of_passegers
,我把差加到{
你的
number_of_infants
计算应该是:否则很可能低于所需数量以满足您的乘客要求(介于}之间的
0
和{random
数量)。在但是。。。考虑到您列出的限制条件,您最好先计算成人之前的婴儿数量,然后再计算以
number_of_infants
为最小值的成人数量。把孩子的数量留到最后,并应用相同的逻辑。既然这看起来像是家庭作业,我就不提供代码了。在也就是说:
随机生成乘客数
生成随机数量的婴儿 (不能超过数字的一半 乘客人数)
随机生成成人数量 (必须至少有几个婴儿)
随机生成青年人数 (不能比乘客少 婴儿少成人)
Number of children是指 乘客减去前三名 组。
还有,你为什么要这么做?在
^{pr2}$要么这样做:
或者:
^{4}$相关问题 更多 >
编程相关推荐