python if 语句 缩进
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python if 语句 缩进相关的知识,希望对你有一定的参考价值。
for n in range(2,14):
for x in range(2,n):
if n%x==0:
print n,'equals',x,'*',n/x
break
else:
print n,'is a prime number'
这样是对的。else为什么跟for对其,而不是if?
像这样:
for n in range(2,14):
for x in range(2,n):
if n%x==0:
print n,'equals',x,'*',n/x
break
else:
print n,'is a prime number'
就会输出
3 is a prime number
4 equals 2 * 2
5 is a prime number
5 is a prime number
5 is a prime number
6 equals 2 * 3
7 is a prime number
7 is a prime number
7 is a prime number
7 is a prime number
7 is a prime number
8 equals 2 * 4
9 is a prime number
9 equals 3 * 3
10 equals 2 * 5
11 is a prime number
11 is a prime number
11 is a prime number
11 is a prime number
11 is a prime number
11 is a prime number
11 is a prime number
11 is a prime number
11 is a prime number
12 equals 2 * 6
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
13 is a prime number
#lz说的第一种,如果range(2, n)中的每一条均没有执行,则会执行else语句,逻辑是for...else
以下是else的一些总结
if-else语句:
和各种语言相同的用法,在条件语句中,与if语句搭配使用的else语句。如果if语句的条件表达式的结果布尔值为假,那么程序将执行else语句后的代码。它的语法是大家最为熟知的:
Python代码
if expression:
expr_true_suite
else:
expr_false_suite
elif(else-if)语句:
elif是python提供的else-if语句,它检查多个条件表达式的值是否为真,并在为真时执行特定代码块中的代码。和else一样,elif是可选的,但是要注意的是,一个if语句可以跟多个elif语句,但最后只能有一个else语句:
Python代码
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
none_of_the_above_suite
while-else/for-else语句:
在其他语言中,除了条件语句,是不会见到else分支的,但在Python中,while和for循环中,也是可以使用else语句的。它们的工作顺序为:在循环中使用时,else语句只在循环完成后执行,也就是说,break语句也会跳过else代码块,只要循环是正常结束,而不是通过break,else语句就会执行。
while-else举例:
Python代码
#!/usr/bin/env python
# 寻找最大约数
def showMaxFactor(num):
count=num/2
while count>1:
if num%count == 0:
print 'largest factor of %d is %d' % (num,count)
break
count -=1
else:
print num,'is prime'
for i in range(10,21):
showMaxFactor(i)
程序的执行结果为:
largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10
try-else语句:
对于python中的错误和异常,try-except语句段,也可以和else连用,其功能和循环中的else语句没有多大区别:在try范围内没有检测到异常的时候,执行else子句。看一下语法:
Python代码
try:
log = open('logfile.txt','w')
except:
print 'file logfile.txt is not exsit'
else:
log.write('no exception caught')
log.close()
当然,在异常处理中,else一样可以和finally联用:try-except-else-finally。 参考技术A 第二种情况很好理解
for n in range(2,14):
for x in range(2,n):
if n%x==0:
print n,'equals',x,'*',n/x
break
else:
print n,'is a prime number'
比如n是个素数的话,第二重循环每次都会执行到else分支,由于else中没有break,不会挑出第二层循环,就会打n is a prime number很多遍,非素数比如,8,9两种情况自己想一下就明白了,很容易
for n in range(2,14):
for x in range(2,n):
if n%x==0:
print n,'equals',x,'*',n/x
break
else:
print n,'is a prime number'
这里的else应该是和他相对应的for循环结束后再被执行的,同时如果break跳出for循环,那么对应的else也不执行,这样运行结果就对了本回答被提问者采纳 参考技术B # python中的for语句是有else分支的:
# 如果循环不是被break语句跳出,则循环结束后执行else分支,否则不执行
for i in range(10):
print i
if i > 5:break
else:
print 'every item has been printed' 参考技术C 你把空格和tab混用了吧?只用tab试试
python流程控制语句-if语句
一个if语句
if
语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ),也就是只有一个if判断,当为真的时候就运行一块语句,否则就不运行
下面代码中的if语句控制者缩进的print,没有缩进的print语句不受if语句控制,只要是在if语句下面并且缩进了,那么这条语句就受if语句控制
#!/usr/bin/python # Filename: if.py number = 123 guess = int(raw_input("Enter an integer:")) if guess == number: print ‘Congratulations, you guessed it.‘ print "but you do not win any prizes!" print ‘Done‘
运行代码进行测试,当我们输入123的时候,if语句为true,就会运行缩进的两条print语句,如果这个if语句为false,那么就不会if语句下面的两条缩进的print语句,会继续往下执行下面的没有缩进的代码
if-else语句
if
语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。 else 从句是可选的。
意思是当if语句成立那么执行if语句下面的代码,如果不成立那么执行else下面的代码,if-else之间不能参杂其他没有缩进的代码(因为没有缩进的代码不受if或者else控制)
#!/usr/bin/python # Filename: if.py number = 123 guess = int(raw_input("Enter an integer:")) if guess == number: print ‘Congratulations, you guessed it.‘ print "but you do not win any prizes!" else: print ‘No, it is a little lower than that‘ print ‘Done‘
if-elif-else语句
这种格式的语句表示,当if不成立时,判断elif语句是否成立(可以有很多个elif语句)如果很多个elif语句则继续判断下去,知道成立为止,如果最后都不成立,那么执行else的语句
#!/usr/bin/python # Filename: if.py number = 123
guess = int(raw_input("Enter an integer:")) if guess == number: print ‘Congratulations, you guessed it.‘ print ‘(but you do not win any prizes!)‘ elif guess < number: print ‘No, it is a little higher than that‘ else: print ‘No, it is a little lower than that‘ print ‘Done‘
运行程序进行测试,结果如下:if成立的话执行if下面的语句,如果不成立判断elif语句是否成立,如果成立执行下面的语句,如果不成立执行else
注意我们使用了缩进层次来告诉Python每个语句分别属于哪一个块。这就是为什么缩进在Python如此重要的原因。我希望你能够坚持“每个缩进层一个制表符”的规则。
注意if
语句在结尾处包含一个冒号——我们通过它告诉Python下面跟着一个语句块
elif
和else
从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。
你也可以在一个if块中使用另外一个if
语句,等等——这被称为嵌套的if
语句。
#!/usr/bin/python # Filename: if.py number = 123 guess = int(raw_input("Enter an integer:")) if guess > number: if guess == 322: print ‘Congratulations, you guessed it.‘ print ‘(but you do not win any prizes!)‘ print ‘Done‘
if嵌套表示首先第一层的判断需要成立才会继续判断第二条if判断是否成立,如果有很多层,则继续判断,知道没有为止,只要某一层判断不成立,则后面的判断和下面受控制的语句不再执行
以上是关于python if 语句 缩进的主要内容,如果未能解决你的问题,请参考以下文章