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

#两种类型的else表示的逻辑不一样
#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下面跟着一个语句块

elifelse从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。

你也可以在一个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 语句 缩进的主要内容,如果未能解决你的问题,请参考以下文章

Python之if语句

python笔记--语句

Python------条件语句及基本数据类型

python

python流程控制语句-if语句

条件语句以及循环