Python基础之条件判断&循环

一 if ... elif ... else

1.1 语法结构

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:            # 条件都不满足时执行
    <执行4>

注意:if语句的执行是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse

1.2 实例

# 猜数字游戏

# !/usr/bin/env python
# -*- coding: utf8 -*-

num = 40    # 指定数字

user_input = int(input("请输入您猜测的数字:"))

if user_input == num:
    print("恭喜,猜对了")
elif user_input < num:
    print("很遗憾,猜小了")
else:
    print("很遗憾,猜大了")

二 for循环

在之前学习的过程中,我们已经接触到for循环,比如对列表、字典进行for循环

list1 = ['a','b','c','d']

for i in list1:
    print(i)        # 依次打印a、b、c、d


dict1 = {'name':'Joe','age':18,'gender':'male'}

for k in dict1:         # 默认循环key
    print(k)            # 依次打印(无序):gender、name、age

for v in dict1.values():         # 循环value
    print(v)                     # 依次打印(无序):male、Joe、18

for k,v in dict1.items():         # 循环key-value
    print(k,v)                    # 依次打印(无序):gender male、name Joe、age 18

那现在我们想计算1-10的整数之和,我们也可通过for循环做:

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)          # 55

那如果我们需要计算1-100的整数之和,从1写到100这种方式就很low了,这里我们可以使用Python内置range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:

l = list(range(5))
print(l)         # [0, 1, 2, 3, 4]
sum = 0
for x in range(101):
    sum = sum + x
print(sum)          # 5050

三 while循环

while循环,只要条件满足,就不断循环,条件不满足时退出循环。

3.1 语法结构

while 条件:
    循环体1
    循环体2
    .....

3.2 实例

比如还是上面的题目:计算1-100的整数之和,可以用while循环实现:

sum = 0
n = 1
while n < 101:
    sum = sum + n
    n = n + 1
print(sum)          # 5050

3.3 while ··· else ···

else语句在最后执行,并且只在while循环没有被break打断的情况下才执行,如下:

sum = 0
n = 1
while n < 101:
    sum = sum + n
    n = n + 1
else:
    print('正常计算结束')         # 正常执行
print(sum)          # 5050

四 break

在循环中,break语句可以提前退出循环。回到上面计算1~100的整数的和了例子,我们更改一下,假设当sum>3000时让它退出程序(停止计算),打印n,sum的值,可修改如下:

sum = 0
n = 1

while n < 101:
    if sum > 3000:
        break
    sum = sum + n
    n = n + 1
print(n,sum)          # 5050
sum = 0
n = 1

while n < 101:
    if sum > 3000:
        break
    sum = sum + n
    n = n + 1
else:
    print('正常计算结束')     # 不会执行
print(n, sum)  # 5050

再比如上面if实例--猜数字的例子,让用户不断的猜年龄,猜对退出程序,不对则最多5次机会,再猜不对就退出程序,代码如下:

# !/usr/bin/env python
# -*- coding: utf8 -*-

num = 40     # 指定数字
count = 0    # 指定初始次数为0

while count < 5:
    user_input = int(input("请输入您猜测的数字:"))

    if user_input == num:
        print("恭喜,猜对了")
        break
    elif user_input < num:
        print("很遗憾,猜小了")
    else:
        print("很遗憾,猜大了")
    count += 1      # loop 计数器+1

五 continue

在循环过程中,可以通过continue语句,跳过当前的这次循环,直接开始下一次循环

还是以上面计算1~100整数的和为例,我们假设只计算奇数的和,修改如下:

sum = 0
n = 0

while n < 100:
    n = n + 1
    if n % 2 == 0:
        continue
    sum = sum + n
print(sum)          # 2500

break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都配合if语句使用。

要特别注意,不要滥用breakcontinue语句。breakcontinue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到breakcontinue语句,我们可以通过改写循环条件或者修改循环逻辑,去掉breakcontinue语句。

有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程

posted @ 2018-05-22 19:44  Joe1991  阅读(110)  评论(0)    收藏  举报