[Python学习] 专题二.条件语句和循环语句的基础知识

2023-11-03

        前面讲述了"专题一.函数的基础知识",而这篇文章讲述的Python的条件语句和循环语句的基础知识.主要内容包括:
        1.条件语句:包括单分支、双分支和多分支语句,if-elif-else
        2.循环语句:while的使用及简单网络刷博器爬虫
        3.循环语句:for的使用及遍历列表、元组、文件和字符串

前言: 语句块

        在讲诉条件语句、循环语句和其他语句之前,先来补充语句块知识.(前面讲函数时已经用到过)
        语句块并非一种语句,它是在条件为真(条件语句)时执行或执行多次(循环语句)的一组语句.在代码前放置空格或tab字符来缩进语句即可创建语句块.很多语言特殊单词或字符(如begin或{)来表示一个语句块的开始,用另外的单词或字符(如end或})来表示语句块的结束.

       而在Python中使用冒号(:)来标识语句块的开始,块中每一个语句都是缩进的(缩进量相同).当回退到和已经闭合的块一样的缩进量时,就表示当前块已经结束.

一. 条件语句if

        if分支语句表达式基本类型常见的有一下三种:
        1.单分支语句
        它的基本格式是:
                                  if condition:
                                          statement
                                          statement

        需要注意的是Ptthon中if条件语句条件无需圆括号(),条件后面需要添加冒号,它没有花括号{}而是使用TAB实现区分.其中condition条件判断通常有布尔表达式(True|False 0-假|1-真 非0即真)、关系表达式(>= <= == !=)和逻辑运算表达式(and or not).
        2.双分支语句
        它的基本格式是:
                                  if condition:
                                          statement
                                          statement
                                  else:
                                          statement
                                          statement
        3.多分支语句
        if多分支由if-elif-else组成,其中elif相当于else if,同时它可以使用多个if的嵌套.具体代码如下所示:

#双分支if-else
count = input("please input:")
print 'count=',count
if count>80:
    print 'lager than 80'
else:
    print 'lower than 80'
print 'End if-else'

#多分支if-elif-else
number = input("please input:")
print 'number=',number
if number>=90:
    print 'A'
elif number>=80:
    print 'B'
elif number>=70:
    print 'C'
elif number>=60:
    print 'D'
else:
    print 'No pass'
print 'End if-elif-else'

#条件判断
sex = raw_input("plz input your sex:")
if sex=='male' or sex=='m' or sex=='man':
    print 'Man'
else:
    print 'Woman'

二. 循环语句while

        while循环语句的基本格式如下:
                                                         while condition:
                                                                 statement
                                                                 statement
                                                         else:
                                                                 statement
                                                                 statement
        其中判断条件语句condition可以为布尔表达式、关系表达式和逻辑表达式,else可以省略(此处列出为与C语言等区别).举个例子:

#循环while计数1+2+..+100
i = 1
s = 0
while i <= 100:
    s = s+i
    i = i+1
else:
    print 'exit while'
print 'sum = ',s

'''
输出结果为:exit while
          sum = 5050
'''

        它的输出结果为5050,当时当i加到101时,由于i>100将执行else语句.
        需要注意的是Python中使用井号(#)表示行注释,使用三引号('''...''')表示多行注释.区别于C/C++的//行注释和/**/多行注释.
  
      下面讲述一段代码刷博器爬虫,先给出代码再讲解:

import webbrowser as web
import time
import os
i=0
while i<5:
    web.open_new_tab('http://andy111.blog.sohu.com/46684846.html')
    i=i+1
    time.sleep(0.8)
else:
    os.system('taskkill /F /IM iexplore.exe')
print 'close IE'

        在搜狐博客或新浪博客中只要在新窗口打开就会增加浏览访问次数,所以上面的代码主要是通过调用webbrowser浏览器的open_new_tab打开新的窗口,而CSDN不行(估计绑定用户或ip有关).
        上面代码中windoes命令taskkill的作用是杀掉应用程序IE浏览器,在DOS中输入"taskkill /F /IM iexplore.exe"可以强行关闭应用程序(chrome.exe或qq.exe),其中/F表示强行终止程序,/IM表示图像.在该程序中主要的作用是清除内存,防止内存消耗太大出现死机现象;但是需要调用import os的system()函数打开,而Linux下用kill命令(kill -pid或killall)终止进程.


        代码中time.sleep(seconds)表示"Delay execution for a given number of seconds.",从打开到加载有一定时间.
        当你需要大量增加浏览量时可以使用两层循环嵌套,每次打开5个网页在关闭在执行100次,这样你的内存也不会因为消耗太大出现死机现象,也可以使用import random count=random.randint(20,40)产生20到40随机数来执行外层循环.代码比较简单,主要是想通过它介绍些Python的基础知识.但是初次打开IE浏览器会出现打开次数不一致的错误.why?

三. 循环语句for

        该循环语句的基础格式为:
                                                 for target in sequences:
                                                         statements
        target表示变量名,sequences表示序列,常见类型有list(列表)、tuple(元组)、strings(字符串)和files(文件).
        
Python的for没有体现出循环的次数,不像C语言的for(i=0;i<10;i++)中i循环计数,Python的for指每次从序列sequences里面的数据项取值放到target里,取完即结束,取多少次循环多少次.其中in为成员资格运算符,检查一个值是否在序列中.同样可以使用break和continue跳出循环.
       
1.字符串循环

s1 = 'Eastmount of CSDN'
for c in s1:
    print c,

        注意:如果在print结尾加上逗号,那么接下来语句会与前一条语句在同一行打印.故上面输出显示一行.
        2.列表循环

list1 = [1,3,4,5,'x',12.5]
i = 0
for val in list1:
    print format(i,'2d'),val
    i = i+1
else:
    print 'out for'

        注意:列表List由一堆数据用逗号间隔,方括号括起,可以是同类型也可以是不同类型.format(i,'2d')相当于输出两位,不足的补空格.当输出0-9时显示"口0",而输出10-99时显示"10"实现对其功能.输出结果如下:

 1 3
 2 4
 3 5
 4 x
 5 12.5
out for

        因为迭代(循环另一种说法)某范围的数字是很常用的,所以有个内建的范围函数range供使用.列表中for n in [1,2,3,4,5,6,7,8]相当于listNum=range(1,9).其格式"range(start, stop[, step]) -> list of integers",它的工作方式类似于分片,它包含下限(本例range(1,9)中为1),但不包含上限(本例中9),如果希望下限为0,可以只提供上限如range(4)=[0,1,2,3].
        产生1到100的数字range(1,101),输出1到100的奇数range(1,101,2),输出1到100的偶数range(2,101,2).

       
3.元组循环

tup = (1,2,3,4,5)
for n in tup:
    print n
else:
    print 'End for'

        元组tuple每个数据项不可修改,只可读,而序列list[1,2,3,4]可以修改.
       
4.文件循环
        help(file.read)返回一个字符串."read([size]) -> read at most size bytes, returned as a string."
        help(file.readlines)返回一个列表."readlines([size]) -> list of strings, each a line from the file."相当于读n行,由n次readline组成,读出的字符串构成列表.
        help(file.readline)从某个文件读一行."readline([size]) -> next line from the file, as a string."

#文件循环遍历三种对比
for n in open('for.py','r').read():
    print n,
print 'End'

for n in open('for.py','r').readlines():
    print n,
print 'End'

for n in open('for.py','r').readline():
    print n,
print 'End'

        输出显示:

#第一个read()输出:每个字符间有个空格
s 1   =   ' E a s t m o u n t   o f   C S D N ' 
f o r   c   i n   s 1 :
....
End
#第二个readlines()输出:读取的是一行
s1 = 'Eastmount of CSDN'
for c in s1:
....
End
#第三个readline()输出:读取for.py文件第一行并输出
s 1   =   ' E a s t m o u n t   o f   C S D N '
End

        如果需要文件输出也可以通过下面代码实现,使用w会覆盖而a+是追加功能,后面讲文件详细叙述.
        for r in open('test.txt','r').readlines():
                open('test.txt','a+').write(c)
       
PS:我主要是通过《Python基础教程》和"51CTO学院 智普教育的python视频"学习.所以文中引用了很多视频中的知识、书籍知识和自己的知识,感谢那些作者和老师,希望文章对大家有所帮助,才开始学习python知识,如果文章中有错误或不足之处,还请海涵,也希望大家提出意见与君共勉.勿喷~
        (By:Eastmount 2014-9-22 夜7点 原创CSDN http://blog.csdn.net/eastmount/)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Python学习] 专题二.条件语句和循环语句的基础知识 的相关文章

  • 如果两点之间的距离低于某个阈值,则从列表中删除点

    我有一个点列表 只有当它们之间的距离大于某个阈值时 我才想保留列表中的点 因此 从第一个点开始 如果第一个点和第二个点之间的距离小于阈值 那么我将删除第二个点 然后计算第一个点和第三个点之间的距离 如果该距离小于阈值 则比较第一点和第四点
  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • Python getstatusoutput 替换不返回完整输出

    我发现了这个很棒的替代品getstatusoutput Python 2 中的函数在 Unix 和 Windows 上同样有效 不过我觉得这个方法有问题output被构建 它只返回输出的最后一行 但我不明白为什么 任何帮助都是极好的 def
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐

  • Android 屏幕发生旋转对应的生命周期发生变化解析

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 一 用户首次进入页面后执行的生命周期回调方法 二 屏幕发生旋转后 切换成了横屏 原先的活动被销毁 会重新创建新的活动 三 将横屏切回为竖
  • 栈和队列的基本操作(栈和队列的区别)

    数据结构中的栈与内存中的栈的不同 一 数据结构中的堆栈 在数据结构中的堆栈 实际上堆栈是两种数据结构 堆和栈 堆和栈都是一种数据项按序排列的数据结构 1 栈就像装数据的桶或箱子 我们先从大家比较熟悉的栈说起吧 它是一种具有后进先出性质的数据
  • 基于python 和 matlab的矩阵奇异值分解

    https www cnblogs com pinard p 6251584 html 可参考 一个 mxn的矩阵H可以分解为 U mxm S mxn V nxn 三个矩阵的乘积 这就是奇异值分解 S是一个对角矩阵 一般从大到小排列 S的元
  • Ubuntu16虚拟机调整窗口大小自适应windows7

    win7上ubuntu16虚拟机安装成功后 默认的虚拟机窗口比较小 需要适当调整 才能把虚拟机的屏幕放大 适合使用 以下介绍调整方法 安装vmware tools 启动虚拟机 在虚拟机管理界面上 主屏幕菜单 虚拟机 中点击 安装vmware
  • Xposed集成到Android系统

    XposedBridge 下载源码 然后编写Android mk文件放入源码根目录 LOCAL PATH call my dir include CLEAR VARS LOCAL DEX PREOPT false LOCAL MODULE
  • Qt编译,出现 first defined here,解决方法

    Qt编译 出现 first defined here 解决方法 一般出现这个问题是 pro文件多次包含了某个文件 解决方法 编译时候 找到是哪个文件出现 first defined here 这个错误 定位到文件 你再去 pro文件去找一下
  • 石头剪刀布游戏

    2 石头剪刀布游戏 编写程序模拟石头剪刀布人机对战 程序运行时 系统先出 生成一个随机数 若果为1表示系统出的是石头 2表示系统出的是剪刀 3表示系统出的是布 提示用户输入 同样的1 2 3分别表示石头 剪刀和布 系统分别打印出自己的出拳状
  • 如何进行探索性数据分析

    一般数据分析项目第一步都需要探索性数据分析 主要包括三个方面 使用描述性统计汇总数据 使用图标可视化数据 识别缺失值 通过上述三个方面分析 可以在执行假设检验或统计模型之前对数据集的分布情况有基本理解 并检测获得问题数据情况 下面通过示例说
  • Hexo插件机制分析

    CLI启动 有种流行的做法是把cli和实现分离 比如grunt cli和grunt hexo也是采取这种方式 hexo cli专门处理命令行 hexo才是具体的实现 可以像bash一样执行hexo cli的命令 启动脚本 usr bin e
  • Vue全家桶(一):Vue基础+Vue-Cli+Vue组件化+过渡动画

    目录 1 Vue概述 1 1 认识Vue 1 2 Vue的两核心 1 3 Vue的初体验 1 4 Vue的生命周期 2 Vue CLI Command Line Interface 3 Vue基本使用 3 1 传统开发模式对比 3 2 Vu
  • 关于blob类型的字段使用mybatis进行对mysql数据库的读取,修改properties文件后缀名为yml的问题,报不能bound statement的错的解决

    1 在处理blob类型的时候用到的类型处理器 org apache ibatis type BlobTypeHandler是MyBatis框架中的一个类型处理器 TypeHandler 用于处理数据库中的BLOB binary large
  • Linux 下 vim/Gvim配置

    Sections gt General gt VIM user interface gt Colors and Fonts gt Files and backups gt Text tab and indent related gt Vis
  • Turbo跨平台开源渲染引擎

    Turbo跨平台开源渲染引擎 基于Vulkan开发的跨平台渲染引擎 欢迎来参观 使用 提意见 o o Turbo开源引擎地址 Turbo开源引擎开发记录视频
  • NodeJs安装与全局配置

    1 首先我们要到nodejs官网 https nodejs org 上下载node 选择一个自己喜欢的版本下载 我这里选择的是最新版 2 下载完了就直接双击安装 安装过程中可以另外指定安装路径 我的安装路径是E FRONT nodejs 3
  • poi添加倾斜线

    添加倾斜线 org junit Test public void main1 try Workbook wb new XSSFWorkbook Sheet sheet wb createSheet XX销售对照表 CreationHelpe
  • Glide3.7.0源码详解

    基于的Glide版本 3 7 0 本文分析的是Glide最基本的一行代码 Glide with this load url into imageView 我们认准这一个功能点 来看看Glide默默为我们做了什么 这篇文章会分析这行代码背后的
  • 树莓派vlc配置

    本文目的是用树莓派播放一个MP4视频 硬件版本 树莓派3b 系统版本 2018 04 18 raspbian stretch vlc版本 3 0 3 换源 etc apt sources list deb http mirrors aliy
  • java的h2是什么_什么是H2数据库

    展开全部 H2是Thomas Mueller提供的一个开源的 纯java实现的关系数据库 e68a84e8a2ad3231313335323631343130323136353331333366306436 H2是一个开源的嵌入式数据库引擎
  • 《数学之美》——机器学习最佳入门教程

    本文转载至 http www cricode com 3095 html 数学之美系列 目录 作者 吴军 Google研究员 来源 Google黑板报 快课网整理 数学之美 一 统计语言模型 数学之美 二 谈谈中文分词 数学之美 三 隐含马
  • [Python学习] 专题二.条件语句和循环语句的基础知识

    前面讲述了 专题一 函数的基础知识 而这篇文章讲述的Python的条件语句和循环语句的基础知识 主要内容包括 1 条件语句 包括单分支 双分支和多分支语句 if elif else 2 循环语句 while的使用及简单网络刷博器爬虫 3 循