第五篇:python基础之循环结构以及列表
python基础之循环结构以及列表
python基础之编译器选择,循环结构,列表
本节内容
- python IDE的选择
- 字符串的格式化输出
- 数据类型
- 循环结构
- 列表
- 简单购物车的编写
1.python IDE的选择
IDE的全称叫做集成开发环境(IDE,Integrated Development Environment )
常用的编程语言IDE开发工具有如下一些:
- VIM #经典的linux下的文本编辑器
- Emacs #linux 文本编辑器, 比vim更容易使用
- Eclipse # Java IDE,支持python, c ,c++
- Visual Studio # 微软开发的 IDE, python,c++,java,C#
- notepad++ ,#windows下常用的文本编辑器,比原生notepad好用
- sublime python开发的
- Pycharm ,是主要用于python开发的ide
pycharm具有代码补全,自动保存,语法检查,多种语言支持(html,js,css等)等特性,使用pycharm能够节省大量编码时间,从而提高生产效率。 pycharm的一些设置这里就不做赘述了,网上百度一大把。。。本人也懒得贴那些图片了。。。
2.python字符串的格式化输出
python中字符串格式化输出主要使用的有如下几个占位符:
- %s占位符 占位字符串
- %d占位符 占位整形数据
- %f占位符 占位浮点型数据
举个栗子:
1 print("this is %s num %d. the 5/3=%f." %("my",5,5/3))
2 this is my num 5. the 5/3=1.666667.
至于更多的字符串格式化输出内容等我有空再继续补充,时间比较仓促。
3.数据类型
python中的数据类型主要分为如下几种:
数字:
整型 python中的整形能表示的数字从2^31-1到-2^31之间,占用4个字节
长整型 超出整形表示之外的整数将被使用长整型来存储
整型和长整型在python2中有区分,在python3中已经不区分整型和长整型,统一叫做整型了。
布尔类型:
True 真
False 假
字符串:
用单引号或者双引号包裹起来的内容就是字符串
列表:
存储一组数据,使用[]来表示
字典:
存储一组key:value键值对的数据,使用{}表示
集合:
存储的也是一组数据,但是和列表不同的是,集合中数据没有相同的两个数据,使用set()来定义集合
元祖: 存储的也是一组数据,只是存储在元祖(tuple)中的数据是不能被改变的,声明该类型的数据使用(,)来实现
4.循环结构
其实在上一篇里面已经讲了python中的循环结构,这里照搬过来了:
for循环语句,结构如下所示:
for 变量 in 可遍历对象:
循环体内语句
else:
循环体后语句
其中需要注意的是for循环后面还跟了else语句,这个方式我只在python中见到过,目前我知道的一种用法就是当for循环正常执行结束后就会执行else中的语句,但是,当在循环体中使用break或者循环体异常结束时,else中的语句将不会被执行。
while循环语句,结构如下所示:
while 条件表达式:
循环体内语句
else:
循环体后语句
while循环中也存在else语句,和for循环中的else语句作用一样,当while之后的条件表达式为真时,才会进入循环体内部执行,注意while循环语句可以一次都不被执行。
下面举几个例子来看看循环体结构的使用:
1 _user="abc123"
2 _passwd="abc123"
3 for i in range(3):
4 username=input("username:").strip()
5 password=input("password:").strip()
6 if username==_user and password==_passwd:
7 print("welcome %s" %username)
8 break
9 else:
10 print("invalid username or password!")
11 else:
12 print("拜拜!")
上面例子主要是为了展示for else结构的使用,当然,这种方式也可以通过使用flag的方式来实现:
1 _user="abc123"
2 _passwd="abc123"
3 passed_authentication=False
4 for i in range(3):
5 username=input("username:").strip()
6 password=input("password:").strip()
7 if username==_user and password==_passwd:
8 print("welcome %s" %username)
9 passed_authentication=True
10 break
11 else:
12 print("invalid username or password!")
13 if not passed_authentication:
14 print("拜拜!")
下面是展示while else循环结构的代码:
1 _user="abc123"
2 _passwd="abc123"
3 count=0
4 while count<3:
5 username=input("username:").strip()
6 password=input("password:").strip()
7 if username==_user and password==_passwd:
8 print("welcome %s" %username)
9 break
10 else:
11 print("invalid username or password!")
12 count+=1
13 if count == 3:
14 flag=input("还想玩吗?[y/n]")
15 if flag=="y":
16 count=0
17 else:
18 print("拜拜!")
在循环嵌套中,怎样实现跳出多层嵌套循环呢?可以使用flag标记位来实现:
1 exit_flag = False
2 for i in range(10):
3 if i<5:
4 continue
5 print(i)
6 for j in range(10):
7 print("lever2:",j)
8 if j == 6:
9 exit_flag = True
10 break
11 if exit_flag:
12 break
好了,关于循环结构语句的补充就到这里了。
5.列表
列表是python里面很重要的一种数据类型,学好列表的使用,将有助于写出高质量的代码。
所有序列都可以进行某些特定操作,包括:索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)以及检查某元素是否属于列表成员。
迭代:依次对序列中的每个元素重复执行某些操作。
序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素。也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list[-1]就是该列表的最后一个元素。
序列的分片:序列的分片操作需要提供两个索引作为边界,第一个索引的元素包含在分片内部,第二个索引的元素不包含在分片内部。例如需要取出列表中第三位到第五位的元素可以使用list[2:5],若分片所得部分包含列表的尾部可以将第二个索引置为空。例如list[3:],同样,对于列表首部的元素也可以这样,例如list[:-5]。 对于分片,还有一个步长的参数,该参数可以是隐式设置,隐式设置中,步长是1。分片操作按照该步长遍历序列中元素。例如list[0:5:2]就是以步长为二遍历出列表中从开头到第五位元素。当然,步长也可以为负数,为负数时表示从右到左进行遍历。
列表的加:列表可以进行相加,变成一个更大的列表list=list1+list2,但是限制是相同类型的列表才可以进行相加。虽然字符串也是列表,但是列表和字符串是无法直接相加的。
列表的乘:用一个数字乘以一个列表将会生成一个新的列表,该新列表内容江油老序列重复N次。列表内容为空可以使用None表示,list=[None]*10表示生成一个占用十个空位置的列表。
列表的成员资格:可使用in运算符检查某元素是否是该列表的成员。其返回值是一个布尔类型的值,如果是该列表成员,则返回True,否则返回Flse。例如'a' in list操作。
列表的几个内置函数:len、max和min是列表中的内置函数。len函数返回列表包含元素的数量。max和min函数分别返回列表中最大和最小的元素,列入len(list)、max(list)、min(list)
列表的操作
列表可以通过分片来实现增删改查功能:
1 a=["wuchao","jinxin","xiaohu","sanpang","ligang"]
2 print(a[::1])#从开始到结尾切片输出
3 print(a[:-1:])#从开始到倒数第二个切片输出
4 print(a[::2])#从开始到结尾步长为2输出
5 print(a[::-1])#列表反转输出
6 print(a[-1:0:-1])#从倒数第一个到顺数第二个反转输出
7 print(a[1:1]=["xxx"])#在索引为1的位置插入数据
8 print(a[1:2]=[])#把列表中的索引为1的位置的值删除
9 print(a[1:2]=["xxx"])#把列表中索引为1的位置的值改成xxx
列表的方法:
- append:在列表末尾追加新的对象,例如list.append(4)将4追加到list的末尾。
- count:统计某个元素在列表中出现的次数(只能统计当前层中List中的元素)例如list.count('a')
- extend:可以在列表的末尾追加另一个列表,和列表连接操作相似,但是列表连接操作返回一个新的列表,extend返回的是原来列表扩展后的列表,效率比列表连接操作高。例如list1.extend(list2)
- index:从列表中找到某个值第一个匹配项的索引位置例如list.index('a')
- insert:将对象插入到列表的指定位置,例如list.insert(3,'a')插入的位置在insert的参数中定义的位置,原先在该位置的值将依次往后移一位
- pop:移除列表中的一个元素(默认最后一个),并返回该元素的值。list.pop(3)就是将第四个位置的值删除并返回该值。python中没有入栈的方法,但是可以结合使用append和pop方法实现栈的功能(先进先出,后进先出)
- remove:移除列表中某个元素的第一个匹配项,list.remove('a')会移除掉第一个匹配的a,但是不管有没有匹配到该元素都不会有返回值。
- reverse:将列表中的元素反向存放,list.reverse(),同样没有返回值。
- sort:在原位置的列表基础上对列表进行排序,而不是返回一个排序好的副本。list.sort()该方法也没有返回值。
- sorted:该方法对源列表进行排序,并返回一个新的排序好的列表副本,该操作将不会修改源列表的顺序,list2=list1.sorted()
- 高级排序:如果想要自己定义排序规则可以定义一个函数,compare(x,y)当x<y时返回负数,x>y时返回正数,x=y则返回0定义好函数后可将该函数作为sort的参数传递进sort里面进行排序,另,sort还有两个可选参数key和reverse,若需要使用则需通过关键字参数指定,key的值为在排序过程中使用的函数,例如list.sort(key=len)则排序方式为按照元素的长度进行排序。reverse的值为一个bool类型的值,如果为True则进行反向排序,默认是False例如list.sort(reverse=True)就是进行反向排序。
6.简单购物车的编写
需求如下:
1 购物车程序
2 salary = 5000
3 1. iphone6s 5800
4 2. mac book 9000
5 3. coffee 32
6 4. python book 80
7 5. bicyle 1500
8 >>>:1
9 余额不足,-3000
10 >>>:5
11 已加入bicyle 到你的购物车, 当前余额:3500
12 >>>:quit
13 您已购买一下商品
14 bicyle 1500
15 coffee 30
16 您的余额为:2970
17 欢迎下次光临
代码实现:
1 #!/usr/bin/env python
2 # encoding:utf-8
3 # __author__: huxianglin
4 # date: 2016-08-22
5 # blog: http://huxianglin.cnblogs.com/ http://xianglinhu.blog.51cto.com/
6
7 def main():
8 Commodity_list=[["iphone6s",5800],["mac book",9000],["coffee",32],["python book",80],["bicycle",1500]]
9 shopping_list=[]
10 welcome_msg="""
11 ********************************
12 *** 欢迎来到本商店购物 ***
13 ********************************"""
14 print(welcome_msg)
15 salary=None
16 while True:
17 salary=input("请输入你的工资:")
18 if salary.isdigit():
19 salary=int(salary)
20 break
21 else:
22 print("工资只能为数字。。。")
23 continue
24 for i in range(0,len(Commodity_list)):
25 print("\t%s. %s\t\t%s"%(i+1,Commodity_list[i][1],Commodity_list[i][0]))
26 while True:
27 customer_choose=input("请输入要购买的商品编号,退出请输入quit: ").strip()
28 if customer_choose=="quit":
29 print("您的购物清单为:")
30 for i in range(0,len(shopping_list)):
31 print("\t%s. %s\t\t%s"%(i+1,shopping_list[i][1],shopping_list[i][0]))
32 print("您的余额为:%s"%salary)
33 exit()
34 elif customer_choose.isdigit():
35 if int(customer_choose) > len(Commodity_list):
36 print("您输入的商品编号不在本系统中,请重新输入。。。")
37 continue
38 if salary >= Commodity_list[int(customer_choose)-1][1]:
39 shopping_list.append(Commodity_list[int(customer_choose)-1])
40 salary -= Commodity_list[int(customer_choose)-1][1]
41 print("%s已加入您的购物车,当前余额:%s"%(Commodity_list[int(customer_choose)-1][0],salary))
42 else:
43 print("余额不足,%s"%(salary-Commodity_list[int(customer_choose)-1][1]))
44 continue
45 else:
46 print("您输入有误,请重新输入。。。")
47
48 if __name__=="__main__":
49 main()
第五篇:python基础之循环结构以及列表的更多相关文章
- python基础之循环结构以及列表
python基础之编译器选择,循环结构,列表 本节内容 python IDE的选择 字符串的格式化输出 数据类型 循环结构 列表 简单购物车的编写 1.python IDE的选择 IDE的全称叫做集成 ...
- 【Python之路】第五篇--Python基础之杂货铺
字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 1.百分号方式 ...
- Python 基础之循环结构 while
一.while循环介绍 while 循环 可以提高代码的效率,减少代码的冗余 while 条件表达式: code1 code2如果条件表达式成立,返回Ture,就执行其中的代码块 1.基本 ...
- Python 基础之循环结构for及break pass continue
一.for 循环 #循环 变量 迭代 都是一个意思#把列表里面的元素意义的拿出来就是遍历listvar = ["one","two","three&q ...
- 【0728 | 预习】第三篇 Python基础
第三篇 Python基础预习 Part 1 变量 一.什么是变量? 二.为什么要有变量? 三.定义变量 四.变量的组成 五.变量名的命名规范 六.变量名的两种风格 Part 2 常量 Part 3 P ...
- 五、Python基础(2)
五,Python基础(2) 1.数据类型基础 (一)什么是数据类型? 用于区分变量值的不同类型. (二)为何对数据分类? 针对不同状态就应该用不同类型的数据去标识. (三)数据类型分类 1.数字类型 ...
- 第五篇.python进阶
目录 第五篇.python进阶 1. 异常处理 2. 数字类型内置方法 2.定义: 3.常用操作+内置方法: 4.存一个值or多个值: 5.有序or无序: 6.可变和不可变 1.用途: 2.定义: 3 ...
- python分支和循环结构
本文收录在Python从入门到精通系列文章系列 1. 分支结构 1.1 应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构.然而仅有顺序结构并不能解决 ...
- Python 基础 while 循环
Python 基础 while 循环 while 循环 在生活中,我们遇到过循环的事情吧?比如循环听歌.在程序中,也是存才的,这就是流程控制语句 while 基本循环 while 条件: # 循环体 ...
随机推荐
- pageControl设置不居中显示,居左或居右
UIPageControl控件,默认是居中显示的,如下图: 在很多的APP中,会看到pageControl是居左或居右显示的,如下图: 如何控制pageControl的位置显示呢? 设置为居右的代 ...
- http server v0.1_mime.c
#include <string.h> #include "mime.h" static STR_MIME_MAP mime_map[]= { MIME_MAP(MIM ...
- java 类的加载,链接,初始化
本篇的话题,讨论Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码 ...
- cron表达式详解(Spring定时任务配置时间间隔)
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...
- Class.forName()的理解
转自:http://blog.csdn.net/yanwushu/article/details/7574713 使用jdbc方式连接数据库时会使用一句代码Class.forName(String c ...
- python换行写入文件
今天用python做写入文件时,碰到,写入的东西不能换行,打开写入的文件都是一行.后来发现需要在写入的字符后面加上+'\n'. 另外python需要追加写入文件的时候,是用这个方法f = open(' ...
- Linux Shell编程(22)——时间/日期 命令
date直接调用, date 就会打印日期和时间到 stdout 上. 这个命令有趣的地方在于它的格式化和分析选项上.time输出统计出来的命令执行的时间.touch这是一个用来更新文件被存取或修改的 ...
- bootstrap真是个好东西
之前就知道有bootstrap这么个东东,但是因为本身不做web,也就没有仔细了解.这次一个项目合作方使用django和bootstrap做的,有机会接触了一些,感觉确实非常好! 今天下午利用一个下午 ...
- stringstream 与空格 (大家讨论一下代码结果的原因)
#include <iostream> // std::cout, std::endl #include <iomanip> // std::setw #include < ...
- 【转】265行JavaScript代码的第一人称3D H5游戏Demo
译文:http://blog.jobbole.com/70956/ 原文:http://www.playfuljs.com/a-first-person-engine-in-265-lines/ 这是 ...