Python:循环只打印最后一个值

时间:2015-03-08 19:02:00

标签: python python-3.x

我打印奇数到一定数字的程序在数学上有效,但是,我在打印每个奇数时遇到问题。

由于某种原因,程序只打印最后的奇数:

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

2 个答案:

答案 0 :(得分:0)

你对奇数的计数非常...... 奇数。我无法弄清楚你想要做什么。为什么不在x开始1,每次增加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)

答案 1 :(得分: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)

最后,请注意,如果您输入垃圾输入,您的脚本将会出错,例如&#34; y7&#34; - 为了解决这个问题,您应该/可以使用异常处理。