{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" }, "toc": "true" }, "source": [ "# Table of Contents\n", "

1  Python 流程控制
1.1  if 条件判断
1.2  for 循环
1.3  while 循环
" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "source": [ "# Python 流程控制" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## if 条件判断\n", "\n", "if 语句; 由 **if 关键字**、 **判定语句**、 **:冒号** 组成,判定一个条件是否成立。\n", "\n", "如果条件成立,则执行 **if** 下面缩进的代码, 如果不成立则执行 **else** 下面的缩进代码块" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Please input user name:liang\n", "Password:111\n", "account or password error!\n" ] } ], "source": [ "user = \"liang\"\n", "password = '123'\n", "\n", "user_name = input(\"Please input user name:\")\n", "user_password = input(\"Password:\")\n", "\n", "if user_name == user and user_password == password:\n", " print(\"Welcome login...\")\n", "else:\n", " print(\"account or password error!\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**多条件判断:**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "通过 **elif 关键字** 添加一个条件, 可以使用多个 **elif** 来添加很多条件。\n", "\n", "如果 **if** 没有命中, 则判断 **elif** 中的条件,如果 if and 所有elif 中的条件都没有命中就会执行最后的else 下面的缩进代码块。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "猜猜我的年龄:sds\n", "您的输入有误,请输入数字!\n", "猜猜我的年龄:34\n", "大了!\n", "猜猜我的年龄:22\n", "大了!\n", "猜猜我的年龄:10\n", "小了\n", "猜猜我的年龄:11\n", "小了\n", "尝试次数太多\n" ] } ], "source": [ "age = 12\n", "\n", "num = 0\n", "while True:\n", " if num < 5:\n", " guess_num = input(\"猜猜我的年龄:\")\n", " if guess_num.isdigit():\n", " if int(guess_num) == age:\n", " print(\"恭喜你,猜对了!\")\n", " break\n", " elif int(guess_num) > age:\n", " print(\"大了!\")\n", " else:\n", " print(\"小了\")\n", " else:\n", " print(\"您的输入有误,请输入数字!\")\n", " num += 1\n", " else:\n", " print(\"尝试次数太多\")\n", " break" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SB\n" ] } ], "source": [ "# 三元运算 (简单版的ifelse,中能写一行)\n", "\n", "name = \"alex\" if 1 == 10 else \"SB\" # 如果1=1为真那么name = alex,不然则name = SB\n", "print(name)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## for 循环\n", "\n", "for循环是Python中一个通用的序列迭代器,可以遍历任何有序的序列对象内的元素。for语句可以用于字符串、列表、元组、其他任何可迭代对象。\n", "\n", "for循环首行定义了一个赋值目标,或者多个目标,以及你想遍历得对象。首行后面是你想要重复得代码块。\n", "\n", "当for循环时,会逐个将序列对象中的元素赋值给目标,然后为每个元素执行循环主体,循环主体一般使用赋值的目标来引用序列里面得元素。当循环体执行完后,控制权重新回到循环体顶端就会目标变量自动设成下一个元素,直到序列中最后一个元素后结束。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "for i in range(5):\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "在同途也可以通过 **break** 语句退出循环:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "for i in range(5):\n", " if i == 3:\n", " break\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "还有 **continue** 语句,可以跳出一次循环,我们在写程序的时候可以设置一个if条件,满足了就跳过后续操作直接到下次循环:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "4\n" ] } ], "source": [ "for i in range(5):\n", " if i == 3:\n", " continue\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "source": [ "## while 循环\n", "\n", "判断一个循环条件,如果为真则一直循环,所以也可以把条件设置为 **True** 变成无限循环,或者条件不为真循环结束,循环过程中遇到break则退出循环,遇到continue跳过当次循环。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "你是风儿我是沙,缠缠绵绵到天涯... 1\n", "你是风儿我是沙,缠缠绵绵到天涯... 2\n", "你是风儿我是沙,缠缠绵绵到天涯... 3\n", "你是风儿我是沙,缠缠绵绵到天涯... 4\n", "你是风儿我是沙,缠缠绵绵到天涯... 5\n", "你是风儿我是沙,缠缠绵绵到天涯... 6\n", "你是风儿我是沙,缠缠绵绵到天涯... 7\n", "你是风儿我是沙,缠缠绵绵到天涯... 8\n", "你是风儿我是沙,缠缠绵绵到天涯... 9\n", "你是风儿我是沙,缠缠绵绵到天涯... 10\n", "去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼得臭男人..\n" ] } ], "source": [ "count = 0\n", "while True: # 将while循环条件设置为True,下面循环体会一直循环,直到天荒地老。\n", " count += 1\n", " print(\"你是风儿我是沙,缠缠绵绵到天涯...\", count)\n", "\n", " if count == 10:\n", " print(\"去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼得臭男人..\")\n", " break # 跳出循环,天荒地老得循环结束。" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "你是风儿我是沙,缠缠绵绵到天涯... 1\n", "你是风儿我是沙,缠缠绵绵到天涯... 2\n", "你是风儿我是沙,缠缠绵绵到天涯... 3\n", "你是风儿我是沙,缠缠绵绵到天涯... 4\n", "你是风儿我是沙,缠缠绵绵到天涯... 5\n", "你是风儿我是沙,缠缠绵绵到天涯... 6\n", "你是风儿我是沙,缠缠绵绵到天涯... 7\n", "你是风儿我是沙,缠缠绵绵到天涯... 8\n", "你是风儿我是沙,缠缠绵绵到天涯... 9\n", "你是风儿我是沙,缠缠绵绵到天涯... 10\n", "你是风儿我是沙,缠缠绵绵到天涯... 15\n", "你是风儿我是沙,缠缠绵绵到天涯... 16\n", "你是风儿我是沙,缠缠绵绵到天涯... 17\n", "你是风儿我是沙,缠缠绵绵到天涯... 18\n", "你是风儿我是沙,缠缠绵绵到天涯... 19\n", "你是风儿我是沙,缠缠绵绵到天涯... 20\n", "去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼得臭男人..\n" ] } ], "source": [ "count = 0\n", "while True:\n", " count += 1\n", " if count > 10 and count < 15: # 10~115 之间得会执行下面的continue语句,不执行打印\"你是风儿我是沙,缠缠绵绵到天涯。。。\"\n", " continue\n", " print(\"你是风儿我是沙,缠缠绵绵到天涯...\", count)\n", "\n", " if count == 20:\n", " print(\"去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼得臭男人..\")\n", " break" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "loop: 1\n", "loop: 2\n", "loop: 3\n", "loop: 4\n", "loop: 5\n", "loop: 6\n", "loop: 7\n", "loop: 8\n", "loop: 9\n" ] } ], "source": [ "# while 动态条件\n", "import time\n", "\n", "count = 0\n", "run_forever = True\n", "while run_forever: # 设置一个动态的循环条件\n", " count += 1\n", " if count == 9:\n", " run_forever = False # 重置循环条件,这样下面得语句还能执行,只有回到开头得时候发现调节不满足才会不执行;\n", " #break # 用这个结束循环的话,到这个语句会立刻结束,下面的代码将不会执行;\n", " print(\"loop:\", count)\n", " time.sleep(3) # time模块,等待10秒再进行下一步" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "loop1: 1\n", "loop2: 1\n", "loop2: 2\n", "loop2: 3\n", "loop2: 4\n" ] } ], "source": [ "# while嵌套,跳出多级循环\n", "\n", "loop1 = 0 # 设定loop1 and loop2这两个计数器\n", "loop2 = 0\n", "flag = True\n", "while flag:\n", " loop1 += 1\n", " print(\"loop1:\", loop1)\n", "\n", " while True:\n", " loop2 += 1\n", " if loop2 == 5:\n", " flag = False # 循环到子级里面,想退出,我退出这级退出得同时还需要让父级也退出不循环了,设置得这个循环条件就起到作用了,设置为False\n", " break # 跳出我自己这级循环\n", " print('loop2:', loop2)\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" }, "toc": { "colors": { "hover_highlight": "#DAA520", "navigate_num": "#000000", "navigate_text": "#333333", "running_highlight": "#FF0000", "selected_highlight": "#FFD700", "sidebar_border": "#EEEEEE", "wrapper_background": "#FFFFFF" }, "moveMenuLeft": true, "nav_menu": { "height": "12px", "width": "252px" }, "navigate_menu": true, "number_sections": false, "sideBar": true, "threshold": 4, "toc_cell": true, "toc_section_display": "block", "toc_window_display": false, "widenNotebook": false } }, "nbformat": 4, "nbformat_minor": 2 }