2016-02-05 49 views
-6

问题1:对于如果循环和ELIF或者在蟒蛇

只是试图执行程序,但我得到的语法错误

i=input('Enter the value of i') 
for j in range(10): 
    if i==j: 
     print'The value of i is %d'%(i) 
     elif i!=j: 
      print'Please enter a valid value' 
      else: 
       print 'This is not a number' 
+7

请正确格式化您的代码,并且每个帖子只询问一个问题。 – tom10

+1

如果你的代码真的被缩进了,这就是你得到SyntaxError的原因。 'elif'和'else'应该与'if'一致' –

+0

''我得到语法错误'' - 实际上查看错误将是一个很好的地方。 ''下面的代码有什么不同?' - 第一个样本中的第一行在第二行中移动到第二行。 – David

回答

0

以下两个代码之间的区别是,一个代码将要求输入一次,然后循环尝试进行比较,而代码2将要求输入每个循环(10x)...

0

如果您的代码在您放置在此处时真的缩进,那么您得到语法的原因错误是您的elifelse blo cks缩进太多。您的代码的另一个问题是i可能等于或不等于j。没有第三种选择。另一个问题是,它第一次遇到一个不等于输入数字的数字时,它会说它不是一个有效的值。另外,只是说“请输入一个有效值”并不会如此。这里是一个更好版本的代码:

i = None 
while True: 
    i = input("Enter the value of i") 
    if i.isdigit(): 
     if int(i) in range(10): 
      print "The value of i is %d" % i 
     else: 
      print "Please enter a valid value" 
    else: 
     print "This is not a number" 

对于问题2,两者的区别在于,在第一,i=input('Enter the value of i')将在循环之前执行,并在第二个它会为每一个被执行循环迭代。 (也就是说,一次一个执行循环时间。因为range(10)回报十个项目,它运行十倍。)更多关于for循环herehere,并且here

0

你似乎是有原因的语法错误代码中的缩进级别不一致。请尝试以下方法,并调整程序以适应您的任何需求。

#! /usr/bin/env python3 
import sys 


def main(): 
    loop = True 
    while loop: 
     try: 
      i = int(input('Enter of the value of i: ')) 
     except EOFError: 
      sys.exit() 
     except ValueError: 
      print('This is not a number') 
     else: 
      if 0 <= i <= 9: 
       print('The value of i is', i) 
       loop = False 
      else: 
       print('Please enter a valid value') 


if __name__ == '__main__': 
    main()