ACM-奇偶分离-DAY2-python

题目描述

有一个整型偶数n(2<= n <=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有偶数从小到大输出

输入

第一行由一个整数i(2<=i<=30)表示有i组测试数据,每一组由一个整型偶数n

输出

第一行输出所有奇数

第二行输出所有偶数

输入样例

2

10

14

输出样例

1 3 5 7 9

2 4 6 8 10


1 3 5 7 9 11 13

2 4 6 8 10 12 14


解题思路

1.获取输入数据

2.判断奇数或偶数

3.获得对应的奇数偶数并依次输出



1.获取输入数据

python中目前知道的获取输入的函数raw_input(),即可获取输入值;因此

i=raw_input() #获取测试组数

此是则可以利用组数来进行循环获取对应组数的具体数据,关键点:循环

循环可以使用for或者while

while i>0:

    input_number.append(int(raw_input())#获取输入信息追加到input_number数组中

    i=i-1

for循环:

for j in range(i)

    input_number.append(int(raw_input())

2.判断奇数或偶数

刚开始方法为判断和2求余是否为0然后来输出,具体如下所示:

def print_numbers(n):
        odd=[]#Q1:do not define ok,array list dictionary and .etc
        even=[]
        if n%2!=0:
                print "The input is not an even integer"
        else:
                for i in range(1,n+1,1):#Q2:how to use for loop and range function
                        if i%2!=0:
                                odd.append(i)#Q3:what about append it's for string or array?
                        else:
                                even.append(i)
                print odd
                print even

由上则可以进行输出结果,最终完整代码:


#!/usr/bin/python 
'''
example 3:
2<=n<=10000
one integer 

input example:
2
10
14

output:
1 3 5 7 9
2 4 6 8 10

1 3 5 7 9 11 13
2 4 6 8 10 12 14
'''
def print_numbers(n):
	odd=[]#Q1:do not define ok,array list dictionary and .etc
	even=[]
	if n%2!=0:
		print "The input is not an even integer"
	else:
		for i in range(1,n+1,1):#Q2:how to use for loop and range function
			if i%2!=0:
				odd.append(i)#Q3:what about append it's for string or array?
			else:
				even.append(i)
		print odd
		print even
			

print "please input the test number"
i=int(raw_input())#Q3:how to input some other parameters with other function?
rows=i
input_number=[]
if i<2 or i>30:
	print "this number is out of range"
else:
	#print "There are %d test lines"%i
	while(i>0):
		#print i
		input_number.append(int(raw_input()))
		i=i-1

#print len(input_number)
i=0
while(i

输出结果:

[root@sky python]# python 3_example.py 
please input the test number
2
10
14
0
[1, 3, 5, 7, 9]
[2, 4, 6, 8, 10]
1
[1, 3, 5, 7, 9, 11, 13]
[2, 4, 6, 8, 10, 12, 14]

但是发现其中刚开始f对于for循环不是特别熟悉,且对于range函数使用不当,因此尝试精简

#!/usr/bin/python 
'''
example 3:
2<=n<=10000
one integer 

input example:
2
10
14

output:
1 3 5 7 9
2 4 6 8 10

1 3 5 7 9 11 13
2 4 6 8 10 12 14
'''
def print_numbers(n):
	if n%2!=0:
		print "The input is not an even integer"
	else:
		for i in range(1,n,2):
			print i,
		print
		for i in range(2,n+1,2):
			print i,
			

print "please input the test number"
i=int(raw_input())#Q3:how to input some other parameters with other function?
rows=i
input_number=[]
if i<2 or i>30:
	print "this number is out of range"
else:
	for j in range(i):
		input_number.append(int(raw_input()))
for i in range(rows):
	print_numbers(input_number[i])
	print '\n' 

利用for循环稍微精简一些,但是过程还是很笨



猜你喜欢

转载自blog.csdn.net/skymfc/article/details/52123466