在大型考试中学生的座号一般按6*5 Z字形编排。如下图:
1 12 13 24 25
2 11 14 23 26
3 10 15 22 27
4 9 16 21 28
5 8 17 20 29
6 7 18 19 30
使用程序如何实现呢?
看似毫无头绪,怎么办呢?先看看这样的排列如何实现
1 7 13 19 25
2 8 14 20 26
3 9 15 21 27
4 10 16 22 28
5 11 17 23 29
6 12 18 24 30
这个很简单,i为行,j为列,数据为 座号=i+j*6+1 (i,j从0起始)
对比两个排列发现1、3、5列一样,只是2、4列不一样,那么我们可以根据奇数列和欧数列分别进行计算
奇数列不变,座号=i+j*6+1 (i,j从0起始)
偶数列其值随着行数增加而减小,座号=m=(j+1)*6-i-1
实现代码如下:
for i in range(6):
for j in range(5):
if j%2==0:
m=j*6+i
else:
m=j*6-i+5
print(m+1,end="\t")
print("")
这里把奇数列和偶数列分别做了处理,那么能不能把两个公式变成一个呢?
m=j*6+((-1)**(j%2))*i+5*(j%2) 这样就可以用一个公式计算了。
代码如下:
for i in range(6):
for j in range(5):
m=j*6+(-1**j)*i+5*(j%2)
print(m+1,end="\t")
print("")