python基础之循环结构以及列表

python基础之编译器选择,循环结构,列表

本节内容

  1. python IDE的选择
  2. 字符串的格式化输出
  3. 数据类型
  4. 循环结构
  5. 列表
  6. 简单购物车的编写

1.python IDE的选择

IDE的全称叫做集成开发环境(IDE,Integrated Development Environment )

常用的编程语言IDE开发工具有如下一些:

  1. VIM #经典的linux下的文本编辑器
  2. Emacs #linux 文本编辑器, 比vim更容易使用
  3. Eclipse # Java IDE,支持python, c ,c++
  4. Visual Studio # 微软开发的 IDE, python,c++,java,C#
  5. notepad++ ,#windows下常用的文本编辑器,比原生notepad好用
  6. sublime python开发的
  7. Pycharm ,是主要用于python开发的ide

pycharm具有代码补全,自动保存,语法检查,多种语言支持(html,js,css等)等特性,使用pycharm能够节省大量编码时间,从而提高生产效率。 pycharm的一些设置这里就不做赘述了,网上百度一大把。。。本人也懒得贴那些图片了。。。

2.python字符串的格式化输出

python中字符串格式化输出主要使用的有如下几个占位符:

  1. %s占位符 占位字符串
  2. %d占位符 占位整形数据
  3. %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

列表的方法:

  1. append:在列表末尾追加新的对象,例如list.append(4)将4追加到list的末尾。
  2. count:统计某个元素在列表中出现的次数(只能统计当前层中List中的元素)例如list.count(‘a‘)
  3. extend:可以在列表的末尾追加另一个列表,和列表连接操作相似,但是列表连接操作返回一个新的列表,extend返回的是原来列表扩展后的列表,效率比列表连接操作高。例如list1.extend(list2)
  4. index:从列表中找到某个值第一个匹配项的索引位置例如list.index(‘a‘)
  5. insert:将对象插入到列表的指定位置,例如list.insert(3,‘a‘)插入的位置在insert的参数中定义的位置,原先在该位置的值将依次往后移一位
  6. pop:移除列表中的一个元素(默认最后一个),并返回该元素的值。list.pop(3)就是将第四个位置的值删除并返回该值。python中没有入栈的方法,但是可以结合使用append和pop方法实现栈的功能(先进先出,后进先出)
  7. remove:移除列表中某个元素的第一个匹配项,list.remove(‘a‘)会移除掉第一个匹配的a,但是不管有没有匹配到该元素都不会有返回值。
  8. reverse:将列表中的元素反向存放,list.reverse(),同样没有返回值。
  9. sort:在原位置的列表基础上对列表进行排序,而不是返回一个排序好的副本。list.sort()该方法也没有返回值。
  10. sorted:该方法对源列表进行排序,并返回一个新的排序好的列表副本,该操作将不会修改源列表的顺序,list2=list1.sorted()
  11. 高级排序:如果想要自己定义排序规则可以定义一个函数,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()
时间: 2024-12-15 07:10:39

python基础之循环结构以及列表的相关文章

Python基础06 循环

Python基础06 循环 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 循环用于重复执行一些程序块.从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系.循环也会用到类似的写法. for循环 for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次. 基本构造是 for 元素 in 序列: statement 举例来说,我们编辑一个叫forDemo.py的文件 for a in [3,4.4,

python练习题:循环打印嵌套列表

好久没写博文了,添加一个练习题,选自<head_first_python>~~ python列表:以中括号开始和结束"[]":列表项以逗号","分隔开,使用赋值操作符"="赋予一个标识符.如: movies=["the holy",1975,"terry jones",91,["graham",["michael","john",&qu

python分支和循环结构

本文收录在Python从入门到精通系列文章系列 1. 分支结构 1.1 应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构.然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分,那么在完成本局游戏后,我们要根据玩家得到分数来决定究竟是进入第二关,还是告诉玩家“Game Over”,这里就会产生两个分支,而且这两个分支只有一个会被执行.类似的场景还有很多,我们将这种结构称之为“分支结构”或“选择结构”

python基础一 ------如何统计一个列表元素的频度

如何统计一个列表元素的频度 两个需求: 1,统计一个随机序列[1,2,3,4,5,6...]中的出现次数前三的元素及其次数 2,统计一片英文文章中出现次数前10 的单词 两种方法: 1,普通的for循环,结合前边 python基础一 -------如何在列表字典集合中根据条件筛选数据的内容 2,自带库 collections 的counter 方法 解决需求一,两种方法 一: 先生成一个随机的列表,通过方法一获取最大元素 获取最多元素 重点讲解第二种方法 1,先导入 from collectio

python基础03-循环结构及函数基础

循环结构及函数基础 循环结构(for-in) 说明:也是循环结构的一种,经常用于遍历字符串.列表,元组,字典等 格式: for x in y: 循环体 执行流程:x依次表示y中的一个元素,遍历完所有元素循环结束 示例1:遍历字符串 s = 'I love you more than i can say' for i in s: print(i) 示例2:遍历列表 l = ['鹅鹅鹅', '曲项向天歌', '锄禾日当午', '春种一粒粟'] for i in l: print(i) # 可以获取下

Python基础教程(第二章 列表和元组)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5293195.html______ Created on Xu Hoo 本章将引入一个新的概念:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python中,最基本的数据结构是序列(sequence),序列中的每个元素被分配一个序号——即

C语言基础知识-循环结构

用while打印出1~100之间7的倍数 int i = 1;     while循环是当条件表达式的结果为真时,执行大括号里面的循环体,重复执行直到条件表达式的结果为假时结束循环.     while( i < 101 ){         if(i % 7 == 0){             printf("%d ",i);         }         i++;     }printf("\n");     倒输出     int number

整理Java基础知识--循环结构

Java有三种循环结构:1.while 循环while循环的基本表达方式:while(布尔表达式){//循环内容}只要布尔表达式==True,循环就会一直执行e.g1: class TestLoop{ public static void main(String args[]){ int i = 10; while(i < 20){ System.out.print("value of x:" + i); i++; System.out.print("\n")

重学Python - Day 03 - python基础 -&gt; while循环实例 + Continue &amp;&amp; break的应用 + 列表的初步学习

while语句的应用 实例如下: 1 """ 2 述求:用户登录系统,最多只能登录三次 3 第三次失败后,程序终止 4 5 """ 6 user_table = {"python":"important","java":"more_important","shell":"linux"} 7 time = 1 8 9 while