1.数据类型

python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是一个对象,即所有数据都是对象。

对象的3个特性:

  • 身份:即内存地址,可以用id()来获取
  • 类型:决定了该对象保存的类型,需要遵循什么规则,可用type()来获取该数据类型
  • 值:对象的保存的的真实数据

标准的数据类型:

数字、字符串、列表、元祖、字典

其他类型:

Null、文件、集合、函数、类、模块

1.1数字类型分类

数字类型分为:int()整型、long()长整型、float()浮点型、 complex()复数、bool()布尔值

python2.x区分整型,长整型  ; python3.x的整型和长整型,都是整型,无长整型。

查看数据类型:

 c:\>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print(type(12))
<class 'int'>
>>> print(type(12.12))
<class 'float'>
>>> print(type("xixihaha"))
<class 'str'>

type

布尔值:

1为True()真;0为False

>>> bool(1)
True
>>> bool(0)
False
>>>

bool

1.2数据运算

a = 10 ,b = 20

1.2.1算术运算

操作符 描述符 示例
+ 加法 - 对操作符的两侧增加值 a + b = 30
- 减法 - 减去从左侧操作数右侧操作数 a - b = -10
* 乘法 - 相乘的运算符两侧的值 a * b = 200
/ 除 - 由右侧操作数除以左侧操作数 b / a = 2
% 模 - 由右侧操作数和余返回除以左侧操作数 b % a = 0
** 指数- 执行对操作指数(幂)的计算 a**b = 10 的幂 20
// 取整除 - 操作数的除法,其中结果是将小数点后的位数被除去的商。 9//2 = 4 而 9.0//2.0 = 4.0

1.2.2比较运算

运算符 描述符 示例
== 检查,两个操作数的值是否相等,如果是则条件变为真。 (a == b) 不为 true.
!= 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (a != b) 为 true.
<> 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 (a <> b) 为 true。这个类似于 != 运算符
> 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 (a > b) 不为 true.
< 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 (a < b) 为 true.
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 (a >= b) 不为 true.
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 (a <= b) 为 true.
 

1.2.3赋值运算

运算符 描述符 示例
= 简单的赋值运算符,赋值从右侧操作数左侧操作数 c = a + b将指定的值 a + b 到 c
+= 加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 c += a 相当于 c = c + a
-= 减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 c -= a 相当于 c = c - a
*= 乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 c *= a 相当于 c = c * a
/= 除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 c /= a 相当于= c / a
%= 模量AND赋值操作符,它需要使用两个操作数的模量和分配结果左操作数 c %= a is equivalent to c = c % a
**= 指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 c **= a 相当于 c = c ** a
//= 地板除,并分配一个值,执行地板除对操作和赋值给左操作数 c //= a 相当于 c = c // a
 

1.2.4位运算

操作符 描述符 示例
& 二进制和复制操作了一下,结果,如果它存在于两个操作数。 (a & b) = 12 即 0000 1100
| 二进制或复制操作了一个比特,如果它存在一个操作数中。 (a | b) = 61 即 0011 1101
^ 二进制异或运算符的副本,如果它被设置在一个操作数而不是两个比特。 (a ^ b) = 49 即 0011 0001
~ 二进制的补运算符是一元的,并有“翻转”位的效果。 (~a ) = -61 即 1100 0011以2的补码形式由于带符号二进制数。
<< 二进位向左移位运算符。左操作数的值左移由右操作数指定的位数。 a << 2 = 240 即 1111 0000
>> 二进位向右移位运算符。左操作数的值是由右操作数指定的位数向右移动。 a >> 2 = 15 即 0000 1111
 

1.2.5逻辑运算

运算符 描述 示例
and 所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立。 (a and b) 为 true.
or 所谓逻辑OR运算符。如果有两个操作数都是非零然后再条件变为真。 (a or b) 为 true.
not 所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。 not(a and b) 为 false.
 

1.3字符串

字符串:是一个有序的字符的集合,用于存储和表示的基本的文本信息。

'内容'或 "内容" 中间包含的内容称为字符串

特性:

  • 只能存放一个值
  • 不可变
  • 按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序

常用字符串的分割、长度、索引、切片

去除空格:

str.strip():删除字符串当前行首尾的的空格

>>> a = '  hello   '
>>> print(a.strip())
hello
>>>

str.lstrip():删除字符串左边的空行,默认为空格

>>> a = '  hello   '
>>> print(a.lstrip())
hello
>>>

str.lstrip():删除字符串右边的空行,默认为空格

>>> a = '  hello   '
>>> print(a.rstrip())
hello
>>>

查找字符串

str.index()和str.find()功能相同,区别在于find()查找失败会返回-1,不会影响程序运行,字符串一般用find,都可指定范围查找。

>>> a = "hello world"
>>> print(a.index('w',0,-1))#0 ,-1 从开始到结束,获取w在字符串中的那个位置
6
>>> print(a.find('w',0,-1))
6
>>> print(a.find('xx',0,-1)) #找不到该值 ,返回-1
-1
>>> print(a.index('xx',0,-1)) #直接报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>>

字符串长度

>>> a = "hello world"
>>> print(len(a))
11
>>>

字符串大小写转换

>>> a = "Hello World"
>>>
#str.lower 把字符串全部转换为小写
#str.upper 把字符串全部转换为大写
#str.swapcase 把字符串中的大小写互换
#str.capitalize 字符串的首字母大写
>>>print(a.lower())
hello world
>>> print(a.upper())
HELLO WORLD
>>> print(a.swapcase())
hELLO wORLD
>>> print(a.capitalize())
Hello world
>>>

把字符串放入中心位置可指定长度及位置的两边字符

#str.center()
>>> a='hello world'
>>> print(a.center(40,'*'))
**************hello world***************

字符串统计

#str.count()
>>> a='hello world'
>>> print(a.count('l')) #统计l在字符串中有几个
3

字符串的测试、判断函数,这一类在string模块中没有,这些函数返回的都是bool值

Str.startswith(prefix[,start[,end]]) #是否以prefix开头
Str.endswith(suffix[,start[,end]]) #以suffix结尾
Str.isalnum() #是否全是字母和数字,并至少有一个字符
Str.isalpha() #是否全是字母,并至少有一个字符
Str.isdigit() #是否全是数字,并至少有一个字符
Str.isspace() #是否全是空白字符,并至少有一个字符
Str.islower() #S中的字母是否全是小写
Str.isupper() #S中的字母是否便是大写
Str.istitle() #S是否是首字母大写的

字符串切片

str = ''
print (str[0:3]) #截取第一位到第三位的字符
print (str[:] )#截取字符串的全部字符
print (str[6:]) #截取第七个字符到结尾
print (str[:-3] )#截取从头开始到倒数第三个字符之前
print (str[2]) #截取第三个字符
print (str[-1] )#截取倒数第一个字符
print (str[::-1]) #创造一个与原字符串顺序相反的字符串
print (str[-3:-1] )#截取倒数第三位与倒数第一位之前的字符
print (str[-3:]) #截取倒数第三位到结尾
print (str[0:10:2])#每隔一个,取一个值
print (str[0:10:3])#每隔2个,取一个值

字符串替换

#str.replace()默认替换字符串的所有值
>>> a = "Hello World"
>>> print(a.replace('l','F'))#把字符串中的把l全部替换成F
HeFFo WorFd
>>> print(a.replace('l','F',1))#只替换字符串中的第一个l替换成F
HeFlo World
>>>

字符串分离

>>> a = "Hello World"
>>> print(a.split())#默认按空格把字符串分为两个值,分离成列表,也可以按照指定的值,分离
['Hello', 'World']

字符串格式化str.format()和str.formap_map()

str.format()#用法介绍
#根据{name} ,特定的值来格式化(常用)
test = 'i am {name}, age {a}'
print(test)
v = test.format(name='yangjian',a=19)
print(v) #执行结果
i am {name}, age {a}#格式化之前的值
i am yangjian, age 19 #格式化之后的值 #根据格式化的循序,来传入相应格式化顺序的值
test = 'i am {0}, age {1}'
print(test)
v = test.format('xixi',19)
print(v)
#执行结果
i am {0}, age {1}#格式化之前的值
i am xixi, age 19#格式化之后的值 str.format_map()#用法介绍
 #.format_map,传入的值 {"name": 'yj', "a": 19}  key:value 值来传入
test = 'i am {name}, age {a}'
v1 = test.format(name='df',a=10)
v2 = test.format_map({"name": 'yj', "a": 19})
print(v1)
print(v2)
#执行结果

i am df, age 10
i am yj, age 19

 

str.expandtabs(tabsize=)

该方法返回字符串中的 tab 符号('\t')转为空格后,生成的新字符串。

tabsize -- 指定转换字符串中的 tab 符号('\t')转为空格的字符数。

name = "name\tage\thobby\t"
v = name.expandtabs(20) #20 可以用tabsize=20表示 ,每个\t转换后有20个字符,没有20个字符则用空格表示,
#如果该\t前面字符有20个,
#则\t需要转换后要有20个空格的字符。
print(v)
print(len(v))
#打印结果
name age hobby
60
name = "name\tage\t12345678\t"
res = name.expandtabs() #每个\t 默认转换后一共有8个字符,不够用空格表示
print(len(res))
print(res)

str.join(iterable)按照可迭代(iterable)的对象,根据某个元素进行连接

#按照可迭代的对象,根据某个元素进行连接
#这里是可迭代的元素,根据下划线进行连接成一个字符串
name = "yangjian"
n = "_".join(name)
print(n)
#打印结果
y_a_n_g_j_i_a_n

1.4for循环

for循环语句,可用来遍历任何序列的项目。

#!/usr/bin/env python
#-*- coding:utf-8 -*-
for i in range(10):
print("loop",i)

输出

 loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
loop 6
loop 7
loop 8
loop 9

loop

每次遍历,打印一个数字的序列,range()是生成一个数字序列

break和continue

 for i in range(10):
if i>5:
break #跳出本层循环
print("loop:", i )
 for i in range(10):
if i<5:
continue #跳出(结束)本次循环,直接进入下一次循环
print("loop:", i )

for   else语法:如果for循环没有被break终止(for循环正常走完),就执行else语句

列如:猜年龄,猜5次,猜正确了,退出;5次没猜正确,就执行else

 #!/usr/bin/env python
xixi_age = 20
for i in range(5):
guess_age = int(input("age:"))
if xixi_age == guess_age:
print("正确")
break
elif guess_age >20:
print("猜大了")
else:
print("猜小了")
else:
print("猜了太多次")

1.5while循环

while循环的判断条件的为True,会一直循环;当判断条件为false,循环结束

列如:猜测年龄10次

 #!/usr/bin/env python
# -*- coding:utf-8 -*- xixi_age = 20
count = 0
while count < 10:
guess_age = input("请输入用户年龄:")
if guess_age.isdigit():
guess_age = int(guess_age)
else:
count +=1
continue if xixi_age == guess_age:
print("正确")
break
elif guess_age >20:
print(" guess smaller")
else:
print(" guess bigger")
count +=1
else:
print("猜试了太多次")

1.6 列表

序列是python中最基本的数据结构,序列中的每个元素都分配一个数字--他的位置,或索引,第一个元素的索引是0,第二元素的索引是1,依次类推。

列表是最常用的python的数据类型。

创建一个 列表,只要把逗号分隔的不通的数据项使用方括号括起来即可,如下;

 list1 = ["a","b","c","d","e"]
list2 = ["math","chinese","englist",123,456,789]

len(object )可以获取某一对象的长度

列表的常用方法

增加:

 list1.append("f") #在列表末尾,添加f
list1.insert(1,'g')#从列表中添加到索引(1)位置的后面

删除:

 list1.remove("e")#移除列表中的e
list1.pop(1) #默认删除列表中的最后一个值,加上索引,是删除相应索引的值,并且返回删除的是哪个值
del list1[3] #删除列表的索引3的值

del可以删除某一对象。

修改

list1[0] = 'A' #修改列表的第一个值

查询(切片:获取某一段范围的值)

 print(list1[0:3]) #查询列表中的前3个元素
print(list1[:])#查询列表中的全部元素
print(list1[3:])#查询第三个元素到结尾
print(list1[::2])#每隔一个,获取一个元素
print(list1[::3])#每隔两个,获取一个元素
print(list1[0:5:2])#从0到5的,每隔一个,获取一个元素

其他的用法

print(list1.index('e'))
#获取该元素,在列表中的索引,(如果列表中有多个相同的元素,只会取找到的第一个元素的索引。
#当然也可获取某段范围的索引print(list1.index('d',2,5))) print(list1.count('a')) #统计列表中有几个a(元素) #扩展
list1.extend(list2)#把列表2扩展到列表1
print (list1)
['a', 'b', 'c', 'd', 'e', 'f', 'math', 'chinese', 'englist', 123, 456, 789] #反转
list1.reverse()
print(list1)
['f', 'e', 'd', 'c', 'b', 'a'] #排序
list1 = ["a","c","b","e","d"]
#python3.x系列的数据类型排序,字符串类型和数字类型不能一起进行排序
list1.sort()
print(list1)
['a', 'b', 'c', 'd', 'e'] #清空列表
list1.clear

复制:

 # copy一份数据,copy原数据修改,新copy出来的数据不修改
list3 = list1.copy()
print(list3)
['a', 'b', 'c', 'd', 'e']

程序练习

购物车程序:

需求:

  1. 启动程序后,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
  4. 可随时退出,退出时,打印已购买商品和余额
  5.  #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    shop_list = [
    ['kindle',900],
    ['mac',11000],
    ['iphone',6000],
    ['bike',1800],
    ['open',180]
    ]
    buy_product = []
    while True:
    salary = input("请输入用户工资:")
    if salary.isdigit():
    salary = int(salary)
    break
    else:
    continue
    while True:
    print("商品列表".center(50,'*'))
    for index,i in enumerate(shop_list):
    print(index,i)
    # print(shop_list.index(i),i)
    choose_number = input("请输入商品编号[quit]:")
    if choose_number.isdigit():
    choose_number = int(choose_number) if choose_number < len(shop_list) and choose_number >=0:
    p_item = shop_list[choose_number]
    if salary >= p_item[1]:
    buy_product.append(p_item)
    salary -= p_item[1]
    print("已购买的商品:{shop},当前的用户余额:{balance}元".format(shop = buy_product,balance = salary))
    else:
    print("余额不足,不能购买此商品,只有:{balance}元".format(balance=salary))
    else:
    print("无效的商品编号") elif choose_number == 'quit':
    print("已购买商品".center(50,'*'))
    for i in buy_product:
    print(i)
    print("用户当前余额:{balance}元".format(balance=salary))
    exit()
    else:
    print("无效的输入")

未完待续*****

python基础2(数据类型、数据运算、for循环、while循环、列表)的更多相关文章

  1. 第二章:python基础,数据类型

    """第二章:python基础,数据类型2.1 变量及身份运算补充2.2 二进制数2.3 字符编码每8位所占的空间位一个比特,这是计算机中最小的表示单位.每8个比特组成一 ...

  2. 『Python基础-5』数字,运算,转换

    『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...

  3. Python基础之数据类型

    Python基础之数据类型 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值 ...

  4. python基础一数据类型之字典

    摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...

  5. 《python基础教程(第二版)》学习笔记 列表/元组(第2章)

    <python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...

  6. python基础(二)----数据类型

    Python基础第二章 二进制 字符编码 基本数据类型-数字 基本数据类型-字符串 基本数据类型-列表 基本数据类型-元组 可变.不可变数据类型和hash 基本数据类型-字典 基本数据类型-集合 二进 ...

  7. Python3基础(2)模块、数据类型及运算、进制、列表、元组、字符串操作、字典

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

  8. python 基础之数据类型

    一.python中的数据类型之列表 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 二.列表常用操作 >切片>追加>插入>修改& ...

  9. python基础之数据类型(二)

    Python3 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 不可变的tupl ...

  10. python基础之数据类型/字符串/元组/列表/字典

    Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...

随机推荐

  1. Python基础1

    本节内容2016-05-30 Python介绍 发展史 Python 2 0r 3? 安装 Hello word程序 变量 用户输入 模块初识 .pyc? 数据类型初识 数据运算 if...else语 ...

  2. 非root用户的SSH免密登录

    在网上找到的教程一般是这样说的 cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,都按回车就可以 cat id_rsa. ...

  3. sql server 里面的 dynamic Data Masking

    有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特 ...

  4. SCCM 2012 R2安装部署过程和问题(一)

    在进行Windows Server 2012 R2虚拟化测试前,由于需要安装,部署和管理很多的服务器,自然会想到该如何提高效率和有效的管理.在Windows Server 2008的时代微软已经提供称 ...

  5. debian/ubuntu安装桌面环境

    apt-get install xorg apt-get install gnome 然后startx ubuntu 安装Gnome桌面 1.安装全部桌面环境,其实Ubuntu系列桌面实际上有几种桌面 ...

  6. MVC PartialView

      参考 Updating an MVC Partial View with Ajax RenderPartial vs RenderAction vs Partial vs Action in MV ...

  7. 鼠标 mouseover和mouseout事件

    在div内想实现鼠标移入移出效果,最开始的时候是用了jquery的mouseout和mouseover事件来实现的, $('.product).mouseover(function(){ …… }). ...

  8. Selenium2(WebDriver)_如何判断WebElement元素对象是否存在

    1. selenium中如果去寻找元素,而元素不存在的话,通常会抛出NoSuchElementException 导致测试失败,但有时候,我们需要去确保页面元素不存在,才是我们正确的验收条件下面的方法 ...

  9. 读 [The Root of Lisp]

    首先,在对 Lisp 有一丢丢的了解下读这篇文章会大大激发你学下去的欲望.之后可以看作者的著作<ANSI Common Lisp>. 想要体会一下 Lisp 的强大,本文是不二之选. Co ...

  10. Python3实现TCP端口扫描

    在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可以了解到目标主机都开放了哪些服务,甚至能根据服务猜测可能存在某些漏洞. TCP端 ...