2015-03-08 401 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” - 来解决这个你应该/可以使用异常处理。