分支结构
如果我们需要对用户输入的数进行判断,以决定是否进行操作,那么我们就需要用到分支操作。
在C
语言中,if
语句的写法应该是这样的
if(条件判断)
{
... ...
}
在python
中稍有不同,第一条件判断不用打括号,当然打括号也没有关系,第二没有花括号,那没有花括号的话,那怎么判断哪些是if
的执行语句。
在python
中使用缩进来进行判断,缩进在其他的高级语言中更多的为了美观,是一种习惯,而不是一种规定,而在python
中却变成了一种语法规则,具体如下:
if 条件判断:
执行语句
... ...
注意if
的执行语句应该缩进相同的长度,否则会报错误。如下
x = 5
if x > 0:
a = 2;
a = a + 2;
编译器会报一个错误
a = a + 2;
^
IndentationError: unindent does not match any outer indentation level
提示是缩进错误,缩进等级不匹配,因为两行语句的缩进不是一样长。所以在python
中是不能随意缩进的。
官方推荐的缩进长度是四个空格,注意不是一个tab
长度,因为一个tab
长度可能在不同的操作系统中有着不同的长度,不过你可以将你的编辑器的tab
长度设置为4个空格。
对了,不要忘了条件判断后的那个冒号,这个也是语法要求。
如果我们需要根据输入以决定进行什么样的操作,那么就需要使用if-else
语句。
if 条件判断:
... ...
else:
... ...
同理,else
执行语句也需要进行缩进,并且要求缩进长度是一样的,但是不要求和if
的一样长。
如果对于条件的判断不只一次,那么就需要使用嵌套分支结构,即
if 条件判断1:
... ...
elif 条件判断2:
... ...
...
else:
... ...
下面以一个猜年龄的例子为例,如果用户输入的年龄大于实际年龄,那么输出"大了",如果小于实际年龄,则输出"小了",否则输出"猜中了"。
realage = 18;
inputage = input('Please input age:') #用户输入年龄
inputage = int(inputage) #将输入的字符转换为数字
if inputage < realage:
print("小了")
elif inputage > realage:
print("大了")
else:
print("猜中了")
循环结构
如果有一件工作需要重复的进行,比如打印输出100
遍,当然你可以写一百遍print
,这样的话代码非常的长,且代码的效率及其的低下,这个时候就可以使用循环结构,循环可以使用while
,也可以使用for
,二者各有其特点。
while
while
循环的语法为
while 条件判断:
... ...
while
循环同if
,执行语句都是需要缩进的,需要注意的缩进问题同上。当条件判断为真(True
)的时候,就执行循环的内容。现在演示打印100
遍Hello World!
i = 100
while i > 0:
print('Hello World!')
i = i - 1
上面的那个猜年龄的游戏每次只能进行一次,然后就必须再编译一次,我们可以使用循环,让用户不停的猜
realage = 18;
while True:
inputage = input('Please input age:') # 用户输入年龄
inputage = int(inputage) # 将输入的字符转换为数字
if inputage < realage:
print("小了")
elif inputage > realage:
print("大了")
else:
print("猜中了")
但是就是有一个问题就是,即使是你猜中了,它还是会让你猜,而我们需要在猜中的时候就退出循环,不再猜了,我们使用break
语句,break
语句的作用就是退出循环,代码如下:
realage = 18;
while True:
inputage = input('Please input age:') # 用户输入年龄
inputage = int(inputage) # 将输入的字符转换为数字
if inputage < realage:
print("小了")
elif inputage > realage:
print("大了")
else:
print("猜中了")
break
与break
相似的还有continue
语句,continue
语句的作用是退出该次循环,即continue
以后的循环语句不执行了,直接进行条件判断,是否继续循环,而break
是直接退出循环。下面我想打印出1 2 4
跳过了3
,我们用循环结合continue
实现,我们只要在要打印3
的时候退出该次循环即可,如下:
i = 0
while i < 4:
i = i + 1
if i == 3:
continue #退出该次循环
print(i)
1
2
4
break
和continue
语句都被称作循环控制语句。
除此之外,while
循环后可以接一个else
语句,如果是正常退出循环的,即不是通过break
退出循环的,那么else
中的程序会得到执行。
i = 5
while i > 0:
i = i - 1
else:
print('我是else语句')
我是else语句
for
for
循环的语法:
for 变量 in 迭代描述:
... ...
迭代描述是一组值,变量会一一取这些值,对每个值执行一次循环。
现用for
循环打印1~10
for i in range(1,11):
print(i)
range(1,11)
是一个列表,里面包含1~10
,变量i
会一一取其中的数,我们把i
打印出来,就可以打印出1~10
了。
for
循环中也可以使用break
和continue
语句进行循环控制,同样的在for
循环也可以加上else
语句,如果是正常退出循环的话,那么就执行else
中的代码。