python基础:python循环、三元运算、字典、文件操作

目录

  • python循环
  • 三元运算
  • 字符串
  • 字典
  • 文件操作基础

一、python编程

  在面向过程式编程语言的执行流程中包含:

    顺序执行

    选择执行

    循环执行

  1.  if是条件判断语句;if的执行流程属于选择执行;if语句有三种格式,如下:

      在多分支的if表达式中,即使多个条件同时为真,也只会执行一个,首先测试为真;

  •  选择执行

      单分支的if语句
        if CONDITION:
          条件为真分支
        
      双分支的if语句
        if CONDITION
          条件为真分支
        else
          条件不满足时分支

      多分支的if语句
        if CONDITION1
          条件1为真分支
        elif CONDITION2
          条件2为真分支
        elif CONDITION3
          条件3为真分支
          ...
        elif CONDITIONn
          条件n为真分支
        else
          所有条件均不满足时的分支

    示例:

     

复制代码
age = 56
guess_num = int(input('your guess num: '))if guess_num == 56:print('Congratulations, you got it')
elif guess_num > age:print('try smaller...')
else:print('try bigger...')
复制代码

 

  •  循环执行

   for循环:

     for循环是遍历文件中的每个元素来实现循环;元素遍历完成即退出循环;

   示例:

       

复制代码
>>> for i in range(10):

    print(i) ... 0 1 2 3 4 5 6 7 8 9
复制代码

   while循环:

     是计算机编程语言中的一种控制流程语句。主要由一个代码块(作为循环体)和一个表达式(作为循环条件)组成,表达式为布尔(boolean)型。循环体内的代码执行一次后,程序会去判断这个表达式的返回值,如果这个表达式的返回值为“true”(即满足循环条件)时,则循环体内的代码会反复执行,直到表达式的返回值为“false”(即不满足循环条件)时终止。程序会在每次循环体每执行一次后,进行一次表达式的判断。

    示例:

      

复制代码
count = 0
while True:print(count)if count > 9:breakcount+=10
1
2
3
4
5
6
7
8
9
10
复制代码

  循环进入与退出的条件:

  for循环

    进入条件:列表元素非空

    退出条件:列表元素遍历完成

  while循环

    进入条件:条件测试结果为真

    退出条件:条件测试结果为假

  

  循环控制语句:

    continue:  跳出本轮循环,进入下一轮循环;

    break: 跳出当前层整个循环;

  示例:

    

复制代码
for i in range(10):if i == 5:  #表示如果循环时i等于5,如果是continue则直接跳过本轮循环,不进行打印continueprint(i)0
1
2
3
4
6
7
8
9
复制代码
复制代码
for i in range(10):if i == 5:for j in range(10,20):if j == 16:break  #循环时j等于16,使用break则跳出本层循环,而不会跳出整个循环;print(j)print(i)0
1
2
3
4
10
11
12
13
14
15
5
6
7
8
9
复制代码

  注:在python中pass表示占位符的意思;  

  2.  三元运算:

    三目运算符,计算机c语言的重要组成部分。条件运算符是唯一有3个操作数的运算符,所以有时又称为三元运算符。

    <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。

  示例:

a = 10
b = 15
c = a+b if a<b else a-b
print(c)25

  3.  元组

  元组只有index与count两个方法;元组是不可变的;又名只读列表;

  示例:

复制代码
tup=('mac','jack','bike','bike','iphone')
print(tup.count('bike'))
print(tup.count('jack'))
print(tup.index('iphone'))2
1
4
复制代码

  4. 字符串

  字符串是不可改变的;python中一个字符串或一个列表或列表中一个元素就是一个对象;在python中所有方法都是通过.来进入调用的;

示例:

复制代码
复制代码
>>> name = 'hsggj'
>>> name.index('s') #查找索引位置
1>>> name.capitalize() #首字母成大写
'Hsggj'>>> name='Hsggj Guo'
>>> name.casefold() #大写全部替换成小写
'hsggj guo'>>> name.count('g') #统计字数
2>>> name.find('Gu') #查找的意思,找到则返回位置,找不到则返回-1
6>>> name.endswith('uo') #是否以uo结束,如果是则打印True,否则打印False
True>>> name='hsggj\tguo'
>>> name.expandtabs(20) #expandtabs是替换\t的空格数,20表示20个空格
'hsggj               guo'字符替换的两种方法:
>>> msg='my name is {0}, and i am {1} years old'
>>> msg.format('hsggj',22)
'my name is hsggj, and i am 22 years old'>>> msg1='my name is {name}, and i am {age} years old'
>>> msg1.format(age=22,name='hsggj')
'my name is hsggj, and i am 22 years old'>>> name='hsggj'
>>> name1='My Name Is Hsggj'
>>> d='123'
>>> 'ad'.isalpha() #表示是否为字符串
True>>> name.isalpha() #表示是否为字符串
True>>> 'a2d'.isalnum() #是否为字符串和数字
True>>> name.isalnum() #是否为字符串和数字
True>>> d.isdigit() #是否为数字
True>>> name.isidentifier() #变量名是否合法
True>>> name.isupper() #是否全大写
False>>> name.islower() #是否全小写
True>>> d.isdecimal() #是否包含十进制数字
True>>> d.isnumeric() #是否只包含数字,包括十进制数字和其它特殊数字
True>>> name.isprintable() #是否可打印
True>>> name1.istitle() #是否为一个title
True>>> l1=['mac','jack','bike']
>>> ','.join(l1)  #将列表替换成字符串
'mac,jack,bike'>>> name.ljust(20,'-') #左对齐字符串,最右边填充‘-’
'hsggj---------------'>>> name.rjust(20,'-') #右对齐字符串,最左边填充‘-’
'---------------hsggj'>>> name.center(20,'-') #字符串居中,两边填充‘-’
'-------hsggj--------'>>> name2='   hsggj   \n'
>>> name2.strip() #字符串两边去除空白
'hsggj'>>> name2.lstrip() #字符串左边去除空白
'hsggj   \n'>>> name2.rstrip() #字符串右边去除空白
'   hsggj'>>> name = 'hsggj guo'
>>> name.replace('gg','DDDDD') #对字符串进行匹配并替换
'hsDDDDDj guo'>>> name.split('s') #将字符串替换成列表,以s分割
['h', 'ggj guo']>>> name.zfill(20) #返回一个长度为20的字符串,最左边填充0
'00000000000hsggj guo'
复制代码
复制代码

字符串的简单加密:

from_str = "!@#$%^"
to_str = "hjklmn"
trans_table = str.maketrans(to_str,from_str)
print("hsggj".translate(trans_table))!sgg@

    5. 字典

复制代码
>>> d1 = {
...     'stu1':'hsggj',
...     'stu2':'jack',
...     'stu3':'mac'
... }
>>> d1.get('stu1','sss') #如果有值则返回,无值则返回sss
'hsggj'>>> d1.keys() #返回所有的key
dict_keys(['stu1', 'stu3', 'stu2'])>>> d1.items() #返回所有的键值
dict_items([('stu1', 'hsggj'), ('stu3', 'mac'), ('stu2', 'jack')])>>> d1.values() #返回所有的值
dict_values(['hsggj', 'mac', 'jack'])>>> d1.pop('stu2') #删除stu2
'jack'>>>print(d1.setdefault('stu6','wss')) #如果有则返回,没有则返回wss
wss#字典的增加
>>> d1['stu4'] = ['tom',25,'cat']
>>> print(d1)
{'stu1': 'hsggj', 'stu4': ['tom', 25, 'cat'], 'stu3': 'mac', 'stu2': 'jack'}#字典的修改
>>> d1['stu4'][0] = 'TOM'
>>> print(d1)
{'stu1': 'hsggj', 'stu4': ['TOM', 25, 'cat'], 'stu3': 'mac', 'stu2': 'jack'}#字典的删除
>>> print(d1.pop('stu5','sss'))
sss
>>> print(d1.pop('stu2','sss'))
jack
>>> print(d1)
{'stu1': 'hsggj', 'stu4': ['TOM', 25, 'cat'], 'stu3': 'mac'}
>>>print(d1.popitem()) #随机删除
('stu1', 'hsggj')#字典中值的替换
>>> print(dict.fromkeys(d1,1))
{'stu1': 1, 'stu4': 1, 'stu3': 1}
>>> print(dict.fromkeys(d1,'hsggj'))
{'stu1': 'hsggj', 'stu4': 'hsggj', 'stu3': 'hsggj'}#字典的合并
>>>d2 = {'stu6':'TOM',1:333,3:888}d1.update(d2)print(d1)>>>{1: 333, 3: 888, 'stu3': 'mac', 'stu1': 'hsggj', 'stu6': 'TOM', 'stu2': 'jack'}#字典中的浅复制
  (浅复制只能复制第一层,不能复制第二层,第二层的id是不一样的,但第二层的id是一样的;
>>>n3 = dict.fromkeys(d1,1)n3['stu1'] = 2print(n3)
>>>{'stu3': 1, 'stu2': 1, 'stu1': 2}  1659162384 1659162352>>>n3 = dict.fromkeys(d1,[1,2,3])n3['stu2'][2] = 9print(n3)
>>>{'stu3': [1, 2, 9], 'stu2': [1, 2, 9], 'stu1': [1, 2, 9]}     2620113945224 2620113945224        
复制代码

   6. 字典的循环

复制代码
d1 = {'stu1':'hsggj','stu2':'jack','stu3':'mac'
}for key in d1:print(key,d1[key])stu2 jack
stu1 hsggj
stu3 macfor k,v in d1.items():print(k,v)stu2 jack
stu1 hsggj
stu3 mac注:第一种效率要比第二种高,第二种在执行循环的时候要先把字典转换成元组后再进行遍历,文件按G来算其实效率光转换就很慢了
复制代码

   7. 浅复制与深复制

    

复制代码
import copyd1 = {'name':'tom','acc':{'id':3333,'blance':1000}}
d2 = d1.copy()
d3 = copy.deepcopy(d1)
d3['name'] = 'jerry'
print(d1,d2,d3){'name': 'tom', 'acc': {'blance': 1000, 'id': 3333}} {'name': 'tom', 'acc': {'blance': 1000, 'id': 3333}} {'name': 'jerry', 'acc': {'blance': 1000, 'id': 3333}}d2['name'] = 'jack'
print(d1,d2,d3){'name': 'tom', 'acc': {'blance': 1000, 'id': 3333}} {'name': 'jack', 'acc': {'blance': 1000, 'id': 3333}} {'name': 'jerry', 'acc': {'blance': 1000, 'id': 3333}}d1['acc']['blance']-=300
print(d1,d2,d3){'name': 'tom', 'acc': {'blance': 700, 'id': 3333}} {'name': 'jack', 'acc': {'blance': 700, 'id': 3333}} {'name': 'jerry', 'acc': {'blance': 1000, 'id': 3333}}d3['acc']['blance']-=100
print(d1,d2,d3){'name': 'tom', 'acc': {'blance': 700, 'id': 3333}} {'name': 'jack', 'acc': {'blance': 700, 'id': 3333}} {'name': 'jerry', 'acc': {'blance': 900, 'id': 3333}}d2['acc']['blance']-=500
print(d1,d2,d3){'name': 'tom', 'acc': {'blance': 200, 'id': 3333}} {'name': 'jack', 'acc': {'blance': 200, 'id': 3333}} {'name': 'jerry', 'acc': {'blance': 900, 'id': 3333}}#d1与d2随着对方的blance减少而减少,而d3则减少一次就再也没有变化过,这就是深复制与浅复制
复制代码

   7. 文件操作

复制代码
f = open('a.txt')
关于open 模式:w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )f.replace(old,new) #内容替换
f.close() #关闭文件并保存
f.flush() #缓存刷写到硬盘上
f.read() #读取文件所有行
f.readline() #读取文件一行
f.readlines() #读取文件所有内容,包含特殊字符
f.write(str) #把str写入到文件中
复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis学习(23):分页1 多参数传递(索引方式)

分页排序 目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer id);Blog selectBlog2(Integer id);List<Blog> sele…

mybatis学习(24):分页2 多参数传递(使用注解)

分页排序 目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer id);Blog se…

Python -- 三元表达式(三目运算符)

一些语言&#xff08;如Java&#xff09;的三元表达式形如&#xff1a; [plain] view plaincopy 判定条件?为真时的结果:为假时的结果 Python的三元表达式有如下几种书写方法&#xff1a; [python] view plaincopy if __name__ __main__: a b True c …

Vista SP1、IIS7,安装ASP.Net 1.1、VS2003、NetAdvantage 2004vol、Sql Server2000全攻略

对于微软的软件&#xff0c;一向认为是&#xff1a;beta版惨不忍睹&#xff0c;rtm版马马虎虎&#xff0c;sp1版。所以&#xff0c;现在Vista SP1出来了&#xff0c;我也考虑更换操作系统了。经过一番google&#xff0c;唯一的问题应该就在于ASP.Net 1.1在Vista上的运行调试了&…

mybatis学习(25):分页3 多参数传递(使用map)

分页排序 目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBl…

2019CCPC湖南全国邀请赛-Chika and Friendly Pairs- 莫队+树状数组+离散化

题目链接&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid6534 思路&#xff1a; 莫队算法&#xff0c;树状数组求和。每个数对应的离散化之后的值需要打表存下来。 Code&#xff1a; 1 #include<bits/stdc.h>2 using namespace std;3 const int N2700010;4 int…

用 GDI 操作 EMF 文件[6]: GetEnhMetaFileHeader - 获取 EMF 的头文件

//增强图元文件的头文件结构 TEnhMetaHeader: tagENHMETAHEADER packed recordiType: DWORD; {记录类型}nSize: DWORD; {结构大小}rclBounds: TRect; {外接矩形(单位是像素)}rclFrame: TRect; {图片矩形(单位是 0.1 毫米)}dSignature: DWORD; …

mybatis学习(26):插入功能(插入数据)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

[Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我哭一会..).. 于是便重新安装, 可是问题来了, 之前安装及配置好的zookeeper/redis/solr/tom…

mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

Linux下redis的安装及配置.

在上一篇[Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例. 我们已经将redis所需tar包拷贝到了linux下的root 根目录下, 接着我们只需要解压就可以了. 先将Redis的tar包拷贝到Linux下的根目录 然后解压到redis文件夹下:(先使用mkdir创建redis文件夹…

实战演习-用wse上传下载文件

jillzhang jillzhang126.com 这几天&#xff0c;光忙着写程序员职场了&#xff0c;对wse的翻译和学习没有太大的进展&#xff0c;这可不太好&#xff0c;毕竟咱还是靠技术混饭吃的&#xff0c;荒废了技术怎么行&#xff01;今天再上一盘有关wse的小菜&#xff0c;目的是想用ws…

mybatis学习(28):获取自增id方式二(在全局中配置setting选项)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

Linux下安装和配置solr/tomcat/IK分词器 详细实例一.

在这里一下讲解着三个的安装和配置, 是因为solr需要使用tomcat和IK分词器, 这里会通过图文教程的形式来详解它们的安装和使用. 注: 本文属于原创文章, 如若转载,请注明出处, 谢谢. 关于设置IK分词器的文章 IK分词器: Linux下IK分词器的安装及配置 1, 解压tar文件 首先我们在根…

mybatis学习(29):适用于没有自增的数据库

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

Configuate Mac OSX $PATH

转载于:https://www.cnblogs.com/SunWentao/archive/2008/06/20/1226975.html

Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

为了更好的排版, 所以将IK分词器的安装重启了一篇博文, 大家可以接上solr的安装一同查看. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://www.cnblogs.com/wang-meng/p/5814798.html 8, 打开浏览器查看solr可视化界面 到了这里solr就配置好了, 可是我…

mybatis学习(30):修改功能

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

ElasticSearch初体验之使用Java进行最基本的增删改查

好久没写博文了&#xff0c; 最近项目中使用到了ElaticSearch相关的一些内容&#xff0c; 刚好自己也来做个总结。 现在自己也只能算得上入门&#xff0c; 总结下自己在工作中使用Java操作ES的一些小经验吧。 本文总共分为三个部分&#xff1a; 一&#xff1a;ES相关基本概念及…

mybatis学习(31):修改部分字段(有外键,先查询,再修改)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…