2015-03-08 235 views
0

我的程序打印奇數的數字達到一定的數字,但是,我無法打印每個奇數。Python:循環只打印最後一個值

出於某種原因,該計劃只打印最後的奇數:

x=0 
N=input('What is your number?') 
N=float(N) 
check=(N/2) 
if (check).is_integer()==1: 
    print('Your number is even') 
    index=N-N/2-1 
    while x<=index: 
     x=2*index+1 
     print(x) 
     index=index+1 
else: 
    print('Your number is odd') 
    index=(N-1)/2 
    while x<=index: 
     x=2*index+1 
     print(x) 
     index=index+1 

回答

0

你奇數的計數是非常.. 。我無法弄清楚你正在嘗試做什麼。爲什麼不簡單地開始x1和每次增加2,直到你到達N

x = 1 
while x <= N: 
    print(x) 
    x += 2 

您不需要在這裏使用float值;使用int並使用%模數(餘數)運算符;這具有優勢,那麼你可以使用一個range()生產所有奇數高達N

N = int(input('What is your number?')) 
if N % 2 == 0: 
    print('Your number is even') 
else: 
    print('Your number is odd') 

for x in range(1, N + 1, 2): 
    print(x) 
0

有幾個建議,我會做。

第一個,你正在使用一個浮點數,但除非你打算使用浮點數(帶有小數的數字),否則我建議你使用整數。

第二個,如果您試圖檢查數字是偶數還是奇數,則應該查看modulo(%)運算符。

第三,始終保持簡單。除非需要,否則不要重複您的代碼。

這是一個簡單版本程序的例子。

user_input=input('What is your number?') 
user_input=int(user_input) 
if user_input % 2 == 0: 
    print('Your number is even') 
else: 
    print('Your number is odd') 
for index in range(1, user_input+1, 2): 
    print(index) 

最後,要知道,如果你把垃圾輸入你的腳本就會報錯,如「Y7」 - 來解決這個你應該/可以使用異常處理。