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循環稍微精簡一些,但是過程還是很笨



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章