运算符

一、算数元算:

  

  读者可以跟着我按照下面的代码重新写一遍,其中需要注意的是,使用除的话,在python3中可以直接使用,结果是4没有任何问题,但是在python2中使用的话,则不行,比如 9/2 在pytnon2中 得出的结果则是4,如果要修正这一结果,读者需要在代码上加上一句 from __future__ import division 即可。

a=20
b=10
print('a+b=%s' %(a+b))
print('a-b=%s' %(a-b))
print('a*b=%s' %(a*b))
print('a/b=%s' %(a/b))
print('a%b={}'.format(a%b))
print('b**a=%s' %(b**a))
print('9//2=%s' %(9//2))

二、比较运算

  

  比较运算的结果返回的值是bool值,为True和False,一般用来控制程序执行的流程,比如说下面的代码:

if a<=b:
# 执行xxx
else:
# 执行×××

三、赋值运算符

  

  赋值运算比较简单,基本跟算数元算一样,读者感觉有什么疑惑的话可以自行跟着上面的例子敲一遍代码。

四、逻辑运算

  

  逻辑运算返回的值也是bool值,True或False,一般也是根据返回值来控制程序流程

五、成员运算

  

  成语运算主要用来判断某一元素是否在某种元素集合中,可以看下下面的例子加深体会

a="abcdefg"
b="d"
if b in a :
print("d元素在a字符串中")
else:
print("d元素不在a字符串") c=[1,2,3,4]
d=5
if 5 in c :
print("1在c列表")
else:
print("1不在c列表")

数据类型

一、数字(int)

  Python可以处理任意大小的正负整数,但是实际中跟我们计算机的内存有关,在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1。对于int类型,需要掌握的方法不多,看下面的几个例子:

a=4
print(a.bit_length()) # 4在二进制中可以用最少3位 100 来表示4,所以输出3
print(int('4')) #将字符串4转换成整数4 # int还可下面的将二进制的字符串转换成整数, base=2 代表前面的字符串是二进制。
print(int('1010',base=2)) # 输出10

二、字符串(str)

  字符串的常用功能太多了,这里我例举几种常见的功能,具体请看下面的代码

s="abcdef ghg k"
print(s.title()) #将字符串转换成标题,输出 Abcdef Ghg K print(s.capitalize()) #将字符串首字母大写,输出 Abcdef ghg k print(s.count('d',0,len(s))) #计算出子串 'd'在母串中出现的次数,默认是在整个母串中查找,
                  #可以在后面跟两个参数指定起始位置查找,这里我指定了在(0,len(s))中查找,
                  #其中len(s)代表获取字符串长度 print(s.startswith('a')) #判断字符串是否以什么开头,这里输出True, print(s.find('g',0,len(s))) #查找子串第一次在母串中出现的位置,这里输出7,同样可以自己指定位置范围来搜查 print(s.upper()) #将字符串转换成大写,这里输出ABCDEF GHG K print(s.join(['a','b','c'])) #用字符串 s 来连接列表['a','b','c'] 输出 aabcdef ghg kbabcdef ghg kc print(s.strip())         #移除两侧空格 print(s.split())         #分割字符串,返回一个列表 这里输出['abcdef', 'ghg', 'k'] print(s.replace('g','G',1)) #替换,默认全部替换,可以设置为1,只替换一次,这里只替换一次输出abcdef Ghg k print(s[0:4]) #切片,[0:4]代表将字符串s的前面4位取出来,这里输出 abcd

三、列表(list)

  列表是Python内置的一种数据类型是列表,是一种有序的集合,可以随时添加和删除其中的元素。

l=['a','b','cc',4]     #定义一个列表

l.append(5)         #添加一个元素,l=['a', 'b', 'cc', 4, 5]

l.pop()           #从尾部删除一个元素,l=['a', 'b', 'cc', 4]

l.remove('a')         #从列表中移除 'a',l=['b', 'cc', 4]

l.extend(['gg','kk'])    #添加一个列表['gg','kk'], l=['b', 'cc', 4, 'gg', 'kk']

l.reverse()          #反转一个列表,l=['kk', 'gg', 4, 'cc', 'b']

print(l.count('kk'))     #某元素出现的次数 输出 1

print(l.index('gg'))     #元素出现的位置,输出 1

for i in l:          #循环输出列表元素
print(i) print(l[0:4:2])       #列表切片,以步长2递增,输出['kk', 4]

四、元组(tuple)

  tuple和list非常类似,但是tuple一旦初始化就不能修改,tuple也是有序的,tuple使用的是小括号标识。

t=('a','b','b','c')   #定义一个元组

print(t.index('b'))   #索引出元素第一次出现的位置,还可以指定在某一范围里查找,这里默认在整个元组里查找输出1

print(t.count('b'))   #计算元素出现的次数,这里输出2

print(len(t))      #输出远组的长度,这里输出4

for i in t:
print(i)       #循环打印出元组数据 print(t[1:3])       #切片 输出('b','b')

五、字典(dict)

  字典是无序的,使用键-值(key-value)存储,具有极快的查找速度。

d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

d.get('Bob')                     #根据key获取values,如果不存在返回None,这里输出75

d.pop('Bob')                     #根据键删除某一元素 d={'Michael': 95, 'Tracy': 85}

d['Jason']=99                       #新增元素 d={'Michael': 95, 'Tracy': 85, 'Jason': 99}

print(len(d))                       #输出字典长度,这里输出3

print('Jason' in d)                 #python3 中移除了 has_key,要判断键是否存在用in

for i in d:
print(i)                     #循环默认按键输出 for i in d.values():                #循环按值输出
print(i) for k,v in d.items():                #循环按键值输出
print(k,v)

补充

一 、enumrate

  为一个可迭代的对象添加序号,可迭代的对象你可以理解成能用for循环的就是可迭代的。默认是编号是从0开始,可以设置从1开始

li = ["手机", "电脑", '鼠标垫', '游艇']
for k, i in enumerate(li,1):
print(k,i)
1 手机
2 电脑
3 鼠标垫
4 游艇

二、range和xrange

  在python2中有xrange和range,其中range会一次在内存中开辟出了所需的所有资源,而xrange则是在for循环中循环一次则开辟一次所需的内存,而在Python3中没有xrange,只有range ,但是python3的range代表的就是xrange。range用来指定范围,生成指定的数字。

for i in range(10):     #循环输出所生成的 0-9
print(i) for i in range(1,10,2): #输出所生成的 1 3 5 7 9
print(i)

课后习题

一、元素分类

  有如下值集合 [11,22,33,44,55,66,77,88,99],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

l= [11,22,33,44,55,66,77,88,99]
bignum=[]
smallnum=[]
dir={}
for num in l:
if num>66:
bignum.append(num)
if num<66:
smallnum.append(num)
else:
pass
dir['k1']=bignum
dir['k2']=smallnum
print(dir)

二、查找

  查找元素,移动空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
      li = ["alec", " aric", "Alex", "Tony", "rain"]
      tu = ("alec", " aric", "Alex", "Tony", "rain") 
      dic = {'k1': "alex", 'k2': ' aric',  "k3": "Alex", "k4": "Tony"}

li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} for i in li:
if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
print(i)
for i in tu:
if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
print(i)
for i in dic.values():
if i.strip().capitalize().startswith('A') and i.strip().endswith('c'):
print (i)

三、输出商品列表,用户输入序号,显示用户选中的商品

   商品 li = ["手机", "电脑", '鼠标垫', '游艇']

#方法一
l1=[1,2,3,4]
l2=["手机", "电脑", '鼠标垫', '游艇']
d=dict(zip(l1,l2))
print(d)
num=input("请输入商品编号:")
print("你选择的商品为 %s" %d[int(num)]) #方法二
li = ["手机", "电脑", '鼠标垫', '游艇']
for k, i in enumerate(li):
print(k,i)
k=input("请输入商品编号:")
print("你选择的商品为 %s" % li[int(k)])

四、购物车

功能要求:

  • 要求用户输入总资产,例如:2000
  • 显示商品列表,让用户根据序号选择商品,加入购物车
  • 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
  • 附加:可充值、某商品移除购物车
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
gouwuche={"电脑":0,"鼠标":0,"游艇":0,"美女":0} #购物车中商品数量
jiage={"电脑":1999,"鼠标":10,"游艇":20,"美女":998} #商品价格表
sum=0 #购物车中商品总价
flag=True
total=int(input("请输入您的资产: "))
for k, i in enumerate(goods):
print(k,i)
while flag:
n=input("购买商品请输入1,购买完成请输入2,离开请输入3: ")
if 1==int(n):
k=input("请输入你要购买的商品编号: ")
num = input('请输入你要购买商品的数量:')
if int (k)>3:
print("你输入的商品编号有误,请重新操作!")
continue
else:
print("你选择的商品%s已添加到购物车" % goods[int(k)]['name'])
gouwuche[goods[int(k)]['name']]+=int(num)
for k,v in gouwuche.items():
sum+=jiage[k]*v
elif 2==int(n):
while 1:
if total < sum:
print("你的余额不足,请充值,或者移除某些商品!")
n = input("充值请输入1,移除商品请输入2: ")
if 1 == int(n):
k = input("请输入充值面额: ")
total += int(k)
elif 2 == int(n):
k = input("请输入要移除商品的编号:")
num = input("请输入要移除商品的数量:")
if gouwuche[goods[int(k)]['name']] < int(num):
print("你输入的数量大于购物车中商品的数量,请重新操作!")
continue
else:
sum-=jiage[goods[int(k)]['name']]*int(num)
else:
print("你输入的数字有误,请重新操作!")
break
else:
print("操作成功,你的余额还剩%s" % (total - sum))
flag=False
break
elif 3==int(n):
break
else:
print("你输入的数字有误请重新操作!")
continue

 五、用户交互,显示省市县三级联动的选择

dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
},
"湖南": {
"长沙":['a','b','c'],
"株洲":['d','e','f']
},
"湖北": {
"武汉":['g','h','i'],
"黄石":['j','k','l']
}
}
for k in dic.keys():
print(k)
flag=True
while flag:
n=input("请输入你所在省:")
for k in dic.keys():
if n in dic.keys():
if k == n:
for i in dic[n].keys():
print(i)
w = input("请输入你所在的城市:")
for i in dic[n].keys():
if w in dic[n].keys():
if i == w:
for k in dic[n][w]:
print(k)
s=input("请输入你所在的县:")
for j in dic[n][w]:
if s in dic[n][w]:
if j==s:
print("你所在的位置是:%s省%s市%s县" % (n,w,s))
flag = False
break
else:
print('不存在,请重新输入')
break
else:
print('不存在,请重新输入')
break
else:
print('不存在,请重新输入')
break

  

  

Python全栈开发之2、运算符与基本数据结构的更多相关文章

  1. 战争热诚的python全栈开发之路

    从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...

  2. python全栈开发之OS模块的总结

    OS模块 1. os.name()      获取当前的系统 2.os.getcwd      #获取当前的工作目录 import os cwd=os.getcwd() # dir=os.listdi ...

  3. Python全栈开发之MySQL(二)------navicate和python操作MySQL

    一:Navicate的安装 1.什么是navicate? Navicat是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小 ...

  4. Python全栈开发之14、Javascript

    一.简介 前面我们学习了html和css,但是我们写的网页不能动起来,如果我们需要网页出现各种效果,那么我们就要学习一门新的语言了,那就是JavaScript,JavaScript是世界上最流行的脚本 ...

  5. Python全栈开发之1、输入输出与流程控制

    Python简介 python是吉多·范罗苏姆发明的一种面向对象的脚本语言,可能有些人不知道面向对象和脚本具体是什么意思,但是对于一个初学者来说,现在并不需要明白.大家都知道,当下全栈工程师的概念很火 ...

  6. Python全栈开发之MySQL(三)视图,存储过程触发器,函数,事务,索引

    一:视图 1:什么是视图? 视图是指存储在数据库中的查询的SQL语句,具有简单.安全.逻辑数据独立性的作用及视点集中简化操作定制数据安全性的优点.视图包含一系列带有名称的列和行数据.但是,视图并不在数 ...

  7. Python全栈开发之21、django

    http://www.cnblogs.com/wupeiqi/articles/5237704.html http://www.cnblogs.com/wupeiqi/articles/5246483 ...

  8. Python全栈开发之17、tornado和web基础知识

    一.web基础知识 学习web框架之前,先来看一下web基础知识,首先要明白其本质就是socket,用户对应一个socket客户端,但是如果从socket开始开发web应用程序那么效率太了,正确的做法 ...

  9. python全栈开发之路

    一.Python基础 python简介 python数据类型(数字\字符串\列表) python数据类型(元组\字典) python数据类型(集合) python占位符%s,%d,%r,%f prin ...

随机推荐

  1. 51nod 1225 数学

    F(n) = (n % 1) + (n % 2) + (n % 3) + ...... (n % n).其中%表示Mod,也就是余数. 例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + ...

  2. Vue DatePicker和不可用

    input控件可以直接设置disabled为不可用状态: DatePicker要想不可编辑,设置readonly属性即可 <DatePicker type="date" v- ...

  3. vue-router路由原理

    Vue-router路由原理 目前实现路由的方式有两中,vue通过参数mode来设置,默认是hash模式. 利用URL中的hash(‘#’)来实现 利用History interface在HTML5中 ...

  4. c++数组遍历十种方式

    int ia[3][4] = {1,2,3,4,5,6,7,8}; //下标 for (int i = 0; i < 3; i++) {     for (int j = 0; j < 4 ...

  5. 2015/9/28 Python基础(19):类的定制和私有性

    用特殊方法定制类前面我们讲了方法的两个重要方面:首先,方法必须在调用前被绑定(到它们相应类的某个实例中):其次,有两个特殊方法可以分别作为构造器和解构器的功能,分别名为__init__()和__del ...

  6. 爬取知乎话题async使用协程

    import requests import json import time from pyquery import PyQuery import pandas as pd from collect ...

  7. php发送get和post请求

    1. Get方式实现 //初始化 $ch = curl_init(); //设置选项,包括URL curl_setopt($ch, CURLOPT_URL, "http://www.abc. ...

  8. GridControl详解(五)设置行备注和行号

    备注显示设置 设置备注字段 显示结果: 可以写入按键事件F3,用以开关备注显示 private void Form4_KeyUp(object sender, KeyEventArgs e) { if ...

  9. Docker 配置国内镜像拉取中心,Configure docker to use faster registries in China.

    Networking in China is really bad when it comes to using some cloud based tools like docker, it's us ...

  10. 漫谈JWT

    一.JWT简介[对于了解JWT的童鞋,可以直接跳到最后] 咱们就不弄那些乱七八糟的概念,就简单点说一下JWT是什么.有什么和能干什么 1. JWT概念和作用 JWT全称为json web token, ...