-5

我正在使用 JES。下面的函数将适用于我想要它做的事情,但它不包括 x 和 y 在答案中。例如,如果我输入的第一个数字是 2,第二个数字是 8,它只打印 4 和 6。我希望它打印 2、4、6、8。请帮助!谢谢!

def main():
  x=input("Enter the first number:")
  y=input("Enter the second number:")
  i=0
  for i in range (x,y):
    if i%2==0:
      print i
4

2 回答 2

2

很简单,问题在于,在 Python(以及,通过扩展,JES)中,range(x, y)xy-1,包括在内。这允许它自然地模仿[]列表运算符的切片语法,即[l[a] for a in range(x, y)]l[x:y]. (至于为什么既要切片又range要这样做,请参阅为什么 range(start, end) 不包括 end?)。

所以,如果你想x包含y,你只需要将最后一个参数提高一个:

for i in range(x, y+1):

它应该打印出你想要的数字。

PSi=0之前的循环是不必要的。循环将for初始化(并在必要时创建)变量i

于 2012-09-08T01:38:18.137 回答
1
print ",".join([str(i) for i in range(int(raw_input("Enter #1:")),\
                                      int(raw_input("Enter #2:"))+1) if not i%2])

我想我的那些括号是对的

或者,使用input时间较短,但存在巨大的安全漏洞,通常应避免使用

print ",".join([str(i) for i in range(input("Enter #1:"),\
                                      input("Enter #2:")+1) if not i%2])

最短的(感谢 nneonneo)

print str([x for x in range(input('1'), input('2')+1) if not x%2])[1:-1] 
于 2012-09-08T01:28:37.267 回答