2016-02-11 114 views
-1

我一直在尝试弄清楚如何重新执行这段代码。我找到的没有任何工作。如果有办法做到这一点,而不是完全重写它,这将是伟大的。我花了很多时间才完成这项工作。Python - 无法弄清楚如何重新运行我的程序

def oddsquare(numbers): 
for n in numbers: 
    if n % 2 == 1: 
     print n**2, 
else: 
    return "" 

startingnumber1 = int(raw_input('Enter your starting number:')) 
endingnumber = int(raw_input('Enter your ending number:')) + 1 

list1 = range(startingnumber1, endingnumber) 
oddsquare(list1) 
+2

就是你能重新运行意思?它不工作吗? – Jacobr365

+0

你的缩进是错的 –

回答

0

如果定义重新运行它会更容易多了很多,但你可能只是把它所有的while循环,如下所示:

def oddsquare(numbers): 
    for n in numbers: 
     if n % 2 == 1: 
      print n**2 
     else: 
      return "" 
while True: 
    startingnumber1 = int(raw_input('Enter your starting number:')) 
    endingnumber = int(raw_input('Enter your ending number:')) + 1 
    list1 = range(startingnumber1, endingnumber) 
    oddsquare(list1) 

如果您需要停止循环,则只需使用“break”。

另外,随着人在评论中提到,没有必要的东西,实际上将破坏你的代码,因为它会返回什么,如果它不等于一,所以,除非它是divisble与每一个数字,它会失败。

+1

这是一个正确的答案,但其他的不是必须的。 oddsquare打印并返回None,除了else使得它返回空字符串,这是毫无意义的 –

0

那么,如果你想要的东西很短,你可以把execfile(__file__)放在你的程序结尾。你或许应该做一些错误的测试,但是,所以我会让它看起来更像是这样的:

try: 
    execfile(__file__) 
except (KeyboardInterrupt, EOFError) as e: 
    pass 
1

我认为你是一个非常初学者的水平。假设我会回答你。 当您从else语句返回,循环结束,这就是为什么你觉得“重新运行”它

更正后的代码

def oddsquare(numbers): 
    for n in numbers: 
     if n % 2 == 1: 
      print n**2 

startingnumber1 = int(raw_input('Enter your starting number:')) 
endingnumber = int(raw_input('Enter your ending number:')) + 1 

list1 = range(startingnumber1, endingnumber) 
oddsquare(list1) 

我会建议你一两件事,一个代表我如果你不使用python3或更高版本, 要输入整数,你可以使用input()而不是raw_input()

所以你的代码的输入线变成:

startingnumber1 = input('Enter your starting number:')) 
endingnumber = input('Enter your ending number:')) + 1 
+1

我很少见过其他for循环使用。我发现了这个定义:如果else语句与for循环一起使用,else语句在循环用尽迭代列表时执行。所以它只是在循环结束后加上一些代码。但是这无法解决OP问题。奇怪,它是upvoted –