python基础2(数据类型、数据运算、for循环、while循环、列表)
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']
程序练习
购物车程序:
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
#!/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循环、列表)的更多相关文章
- 第二章:python基础,数据类型
"""第二章:python基础,数据类型2.1 变量及身份运算补充2.2 二进制数2.3 字符编码每8位所占的空间位一个比特,这是计算机中最小的表示单位.每8个比特组成一 ...
- 『Python基础-5』数字,运算,转换
『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...
- Python基础之数据类型
Python基础之数据类型 变量赋值 Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值 ...
- python基础一数据类型之字典
摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...
- 《python基础教程(第二版)》学习笔记 列表/元组(第2章)
<python基础教程(第二版)>学习笔记 列表/元组(第2章)序列中的下标从0开始x='ABC' ==> x[0]='A', x[1]='B', x[2]='C'负数索引从右边开始 ...
- python基础(二)----数据类型
Python基础第二章 二进制 字符编码 基本数据类型-数字 基本数据类型-字符串 基本数据类型-列表 基本数据类型-元组 可变.不可变数据类型和hash 基本数据类型-字典 基本数据类型-集合 二进 ...
- Python3基础(2)模块、数据类型及运算、进制、列表、元组、字符串操作、字典
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- python 基础之数据类型
一.python中的数据类型之列表 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 二.列表常用操作 >切片>追加>插入>修改& ...
- python基础之数据类型(二)
Python3 元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 不可变的tupl ...
- python基础之数据类型/字符串/元组/列表/字典
Python 数据类型 数字类型: int整型,long 长整型(在python3.0里不区分整型和长整型).float浮点型:complex复数(python中存在小数字池:-5--257):布尔值 ...
随机推荐
- Python基础1
本节内容2016-05-30 Python介绍 发展史 Python 2 0r 3? 安装 Hello word程序 变量 用户输入 模块初识 .pyc? 数据类型初识 数据运算 if...else语 ...
- 非root用户的SSH免密登录
在网上找到的教程一般是这样说的 cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,都按回车就可以 cat id_rsa. ...
- sql server 里面的 dynamic Data Masking
有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特 ...
- SCCM 2012 R2安装部署过程和问题(一)
在进行Windows Server 2012 R2虚拟化测试前,由于需要安装,部署和管理很多的服务器,自然会想到该如何提高效率和有效的管理.在Windows Server 2008的时代微软已经提供称 ...
- debian/ubuntu安装桌面环境
apt-get install xorg apt-get install gnome 然后startx ubuntu 安装Gnome桌面 1.安装全部桌面环境,其实Ubuntu系列桌面实际上有几种桌面 ...
- MVC PartialView
参考 Updating an MVC Partial View with Ajax RenderPartial vs RenderAction vs Partial vs Action in MV ...
- 鼠标 mouseover和mouseout事件
在div内想实现鼠标移入移出效果,最开始的时候是用了jquery的mouseout和mouseover事件来实现的, $('.product).mouseover(function(){ …… }). ...
- Selenium2(WebDriver)_如何判断WebElement元素对象是否存在
1. selenium中如果去寻找元素,而元素不存在的话,通常会抛出NoSuchElementException 导致测试失败,但有时候,我们需要去确保页面元素不存在,才是我们正确的验收条件下面的方法 ...
- 读 [The Root of Lisp]
首先,在对 Lisp 有一丢丢的了解下读这篇文章会大大激发你学下去的欲望.之后可以看作者的著作<ANSI Common Lisp>. 想要体会一下 Lisp 的强大,本文是不二之选. Co ...
- Python3实现TCP端口扫描
在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可以了解到目标主机都开放了哪些服务,甚至能根据服务猜测可能存在某些漏洞. TCP端 ...