python--day2--基础数据类型与变量

笔者:QQ:   360212316

python控制语句

for循环语句示例:

for i in range(10):
    print(i)

for循环语句示例1:

for i in range(10):
    print(i)
else:
   print("for循环正常完成")

多层for循环语句示例:

for i in range(10):
    for j in range(10):
        print(i, j)

for循环猜年龄示例:

feng_age = 39
for i in range(3):
    guess_age = int(input("年龄:"))
    if guess_age == feng_age:
        print("猜对了")
        break
    elif guess_age >= feng_age:
        print("猜大了")
    elif guess_age <= feng_age:
        print("猜小了 ")

break:跳出整个循环

continue:跳出当前层的循环,执行下一个程序

exit():退出整个程序

变量:

变量的作用:保存状态(程序的运行本质是一系列状态变化,变量的目的就是用来保存状态,变量值的变化就构成了程序的不通结果)

数据类型:

什么是数据类型及数据类型分类:

   程序的本质就是驱使计算机去处理各种状态变化,这些状态分为很多种:

例如:

        张三-------------------------------------------------->字符串

        1000------------------------------------------------->数字

        衣服,鞋子,帽子-------------------------------------->列表

python中的数据类型

python使用对象模型来存储数据,每一个数据类型都是一个内置的类,每建设一个数据,实际就是在初始化生成一个对象,即所有数据都是对象。

对象的三个特性:

        身份:内存地址,可以用id()获取

        类型:决定了该对象可以保存什么类型值,可执行何种操作,遵循什么规则,可用type()

        :对象保存的真实数据

        注意:我们定义的数据类型,只需要这样a=1,内部生成1这样的对象会自动触发,我们无需关心

这里定义的字符串、数字、列表等都是数据类型(用来描述某中状态),除此之外还有很多其他数据类型,处理不同的类型就要需定义不同的数据类型:

标准类型 其他类型
数字 类型type
字符串 null
列表 文件
元组 集合
字典 函数 /方法
 
  模块

标准数据类型

数字:

定义 a=1
特性:
    1、只能存放一个值
    2、一经定义,不可更改
    3、直接访问
数字分类:整型,布尔,浮点,复数

整型:

 

    python中的整型分为长整型和整型,python2.7是分整型和长整型之分,python3中不区分长整型和短整型。

布尔值bool:

    Ture和Flase

    1和0。

    非0的值都为真,0为假。

浮点数float:

    python的浮点数就是小学中的小数,类似C语言中的double.
    在运算中,整数与浮点数运算的结果是浮点数

    浮点数也就是小数,之所以称为浮点数,是因为按照科学计数法来表示时,一个浮点数的小数点位置是可变的,比如1.23*109和12.3*108是相等的。浮点数可以用数学写法,比如1.23、3.1415,-9.88,等等。但是对于很大或者很小的浮点数,就必须需用科学计数法表示,把10用e代替1.23*109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。

复数complex:

复数是由实数部分和虚数部分组成,一般形式为x+yj,其中的x是实数部分,y是复数的虚数部分,这里的x和y都是实数。

  注意:虚数部分的字母j大小写都可以。

  例子:

C:\Users\xiaofeng>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.
>>> 1.3 + 2.5j == 1.3 + 2.5j
True
>>>

数字相关内建函数:

函数名 功能 示例
int 当传入参数为小数时,直接去掉小数部分 int(3.5)
去掉小数部分得3
round 四舍五入去小数 round(3.5)
结果得4
math.floor 类似int,离取原小数最近但大于原小数的数 math.floor(3.5)
结果得4
float 浮点型工程函数
complex 复数工厂函数
bool 布尔型工程函数 传入参数非空,非0,非None均返回Ture
abs 绝对值工程函数 abc(-1)得1
coerce 接受两个参数,把数据转成相同类型的,返回一个元组 corece(-1,3,2)得(-1.0,3,2)
divmod 返回元组,包含商和余数 divmod(93,10)得(9,3)
pow 取平房 pow(2,3,3)相当于2**3%3得2,
pow(2,3)等同于2**3
hex 十进制转16进制 hex(10),得0xa,0x开头表示16进制
oct 十进制转8进制 oct(10),得012,0开头代表8进制
ord 根据ASCII表,将字符转换成十进制 ord('a'),得97
chr 根据ASCII表,将十进制转换成字符 char('97')得'a'

字符串:


定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或''' '''中间包含的内容称为字符串
特性:
   1、只能存放一个值
   2、不可变
   3、按照从左到右的顺序定义的字符集合,下边从0开始顺序访问,有序
注意:
    1、字符串的单引号和双引号都无法取消特定字符的含义,如果想让引用内所有的字符均取消特殊含义,就需要在引号前面加r,例如:name=r'zhang\tsan'
    2、unicode字符串与r连用,r必须在前面,如name=ur'zhang\tsan'

字符串的创建:

'hello word'
"hello word"
'''hello word'''
"""hello word"""

字符串常用操作:


        移除空白:
         例子:

msg6 = '  name   '
print(msg6.strip())     # strip去除两边空格
结果:
name

切片:

例子1:

name = 'hello world'
print(name[::2])

结果:
hlowrd

例子2

name = 'hello world'
print(name[:3:2])
结果:
hl

例子3

name = 'hello world'
print(name[1:3])
结果:
el

索引:

例子:

name = 'hello world'
print(name.index('l'))
结果:
2

长度:

例子:

name = 'hello world'
print(len(name))
结果:
11

字符串的各种操作:

name = "Pan Feng"

print(name.capitalize())  #字符串首字母大写
结果:
Pan feng

=============================================================
name = "Pan Feng"
print(name.center(50,'-'))  #输出结果总长度50,两边用自定义符号补全
结果:
---------------------Pan feng---------------------

===========================================================
name = "Pan Feng"
print(name.casefold())      #大写转小写
结果:
pan feng
============================================================
 
name = "Pan Feng"
print(name.count('n'))    #统计字符串中的字母n出现了几次
结果:
2
可选参数:
sub -- 搜索的子字符串
start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

=========================================================
name = "Pan Feng"
print(name.encode())  #字符串转二进制
结果:
b'Pan Feng'

===========================================================
name = "Pan Feng"
print(name.endswith('g')) #检测字符串是否以字母"g"结尾,如果是则返回TRYE,如果不是返回flase
结果:
True
可选参数:
suffix -- 该参数可以是一个字符串或者是一个元素。
start -- 字符串中的开始位置。
end -- 字符中结束位置。

=========================================================
name = "Pan \tFeng"
print(name.expandtabs(tabsize=20)) #如果字符串中加入了\t参数,可可以使用expandtebs执行table的长度
结果:
Pan                 Feng

name = "Pan Feng"
print(name.find('n'))  #查找字符'n'在字符串中出现的位置,字符串也可以且切片
结果:
2
可选参数:
str -- 指定检索的字符串
beg -- 开始索引,默认为0。
end -- 结束索引,默认为字符串的长度。

========================================================
name = "Pan Feng"
print(name[2])  #字符串切片
结果:
n

names = "my name is {name},age is {age}"
print(names)
print(names.format(name="panfeng",age="22"))

占位符,站位符必须在字符串中定义,定义必须使用大括号,.format()中的变量名是大括号之中的内容

=========================================================

name = "Pan Feng 2"
print(name.isalnum()) #阿拉伯数字和字母的组合,并且不能有空格和特殊字符,如果有特殊字符,结果为flase,
结果:
False
相反:
name = "PanFeng2"
print(name.isalnum())
True

========================================================
name = "PanFeng"
print(name.isalpha())  #判断纯英文字母为true,并且不能有空格
结果:
True


=====================================================
name = "Pan Feng"
print(name.isalpha())
结果:
True

=====================================================
name = "12"
print(name.isdecimal())  #判断字符串是否是十进制,十进制结果为True
结果:
True

name = "panfeng"
print(name.isdecimal())  
结果:
False
======================================================
name = "Pan Feng"
print(name.isdigit())  #判断字符串是否为整数,是整数结果为True,反之flase
结果:
False


==================================================


print("A_23".isidentifier()) 判定字符串是否是一个合法的标识符,如果是返回结果True,反之flase
结果:
True

==================================================

name= "pan feng"
print(name.islower())  #判断字符串是否全部是小写,如果是返回结果Ture,反之Flase
结果:
Ture

================================================

name= "PAN FENG"
print(name.isupper())  #判定字符串是否全部是大写,如果是返回结果Ture,反之Flase
结果:
True

==================================================

name= "Pan Feng"
print(name.istitle()) #判定字符串首字母是不是大写,如果是则返回Ture,反之Flase。
如果一个单词中有两个大写字母,结果也是flase
结果:
True

===============================================
print("  ".isspace())  #判断字符串是否全部是空格,如果是则返回Ture,反之Flase。
结果:
True

=========================================
name= "Pan Feng"
print(name.index('e')) #索引字母e的位置,从0开始数,空格也算,一个空格占一位
结果:
5

=============================================
name= "Pan Feng"
print("abc12".isnumeric())





==============================================

print(''.join(['1','2','3','4']))
结果:
1234   #返回通过指定字符连接序列中元素后生成的新字符串。

print('+'.join(['r','a','b','b']))
结果:
r+a+b+b #返回通过指定字符连接序列中元素后生成的新字符串。


s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))
==============================================
name = "pan feng"
print(name.ljust(50,'*'))  #字符串左对齐,50是整个字符串长度,不都用‘-’补全,不指定用空格补全
结果:
pan feng******************************************

可选参数:
width -- 指定字符串长度。
fillchar -- 填充字符,默认为空格。

================================================
name = "pan feng"
print(name.rjust(50,'-')) ##字符串左对齐,50是整个字符串长度,不都用‘-’补全,不指定用空格补全
结果:
------------------------------------------pan feng

可选参数:
width -- 指定字符串长度。
fillchar -- 填充字符,默认为空格。

======================================================

用于截掉字符串左边的空格或指定字符。
name = "             pan feng"
print(name.lstrip())     #左边去掉空格回车
str = "     this is string example....wow!!!     ";
print( str.lstrip() );
str = "88888888this is string example....wow!!!8888888";
print( str.lstrip('8') );

结果:
pan feng
this is string example....wow!!!     
this is string example....wow!!!8888888


=============================================================
p = str.maketrans("abcde","12345")  #定义字符串与数字的对应表
name = "pan feng" 
print(name.translate(p))  将定定义对应表和字符串替换
结果:
p1n f5ng

========================================================

name = "Pan Feng"
print(name.lower())  #大写转小写

结果:
pan feng

===================================================
name = "-  --Pan Feng----  --"

print(name.replace("P","z")) #替换单个字符
结果:
-  --zan Feng----  --

=================================================

name = "-  --Pan Feng----  --"
print(name.rjust(50,'-'))
结果:
------------------------------  --Pan Feng----  --

=================================================
name = "-  --Pan Feng----  --"
print(name.rfind('g'))
结果:
12
==============================================
name = "-  --Pan Feng----  --"

print(name.rindex('g'))
结果:
12
==========================
name = "  -  --Pan Feng----  --  "
print(name.rsplit())

结果:
['-', '--Pan', 'Feng----', '--']

===============================================
name = "  -  --Pan Feng----  --  "
print(name.rstrip())   #右边去掉空格回车

结果:
  -  --Pan Feng----  --

========================================
name = "  -  --Pan Feng----  --  "
print(name.lstrip()) #去掉左边空格
结果:
-  --Pan Feng----  --  

==========================================
以空格划分生成列表,默认
name = "  -  --Pan Feng----  --  "
print(name.split())

结果:
['-', '--Pan', 'Feng----', '--']


=====================================
判断字符串以什么开头
name = "  -  --Pan Feng--\n--  --  "
print(name.startswith('F'))

结果:
False


======================================
大小写互换,小写变大写,大写变小写
name = "  -  --Pan Feng--\n--  --  "
print(name.swapcase())
结构:
  -  --pAN fENG--
========================================
去掉两边空格

 name = "  -  --Pan Feng----  --  "
 print(name.strip())
 
结果:
-  --Pan Feng----  --

======================================
name = "  -  --Pan feng----  --  "
print(name.title())

结果:
  -  --Pan Feng----  --  

==========================================
name = "  -  --Pan feng----  --  "
print(name.zfill(50))
结果:
0000000000000000000000000  -  --Pan feng----  --

列表中最常用的操作

去除空格

切片

长度

索引

数据运算符

算数运算符:

以下例子a=10,b=20

运算符 描述 示例
+ 加法运算 a + b 得 30
- 减法运算

a - b 得 -10

* 乘法运算 a * b 得 200
/ 除法运算 b / a 得 2
% 取模 - 将%号左边的值除以%号右边的值并且将得到的结果的余数返回 10%5得0 ,10%3 得1, 20%7 得6
**

幂 - 返回x的y次幂,就是返回多少次方

2**8 得256

// 取整除 - 返回x除以y的商的整数部分 9//2得4 , 9.0//2.0得4.0

比较运算符:

运算符 描述 示例
== 判定两个对象是否相等 (a == b) is not true.
!= 判断两个对象是否不相等 (a != b) is true.
> 大于   返回a是否大于b (a > b) is not true.
< 小于   返回a是否小于b (a < b) is true.
>= 大于等于  返回a是否大于等于b (a >= b) is not true.
<= 小于等于  返回a是否小于等于b (a <= b) is true.

赋值运算符:

运算符 描述 示例
= 赋值,将右边的值赋值个左边的变量名 c = a + b 将会把a+b的结果赋值给c
+= 自加赋值,将+=左边的值与+=右边的值相加,然后再把结果赋值给+=左边的值 c += a相当于 c = c + a
-= 自减赋值 c -= a相当于 c = c - a
*= 自乘赋值

c *= a 相当于 c = c * a

/= 自除赋值 c /= a 相当于 c = c / a
%= 自取模赋值 c %= a 相当于 c = c % a
**= 自求冥赋值

c **= a 相当于 c = c ** a

//= 自取正赋值

c //= a 相当于 c = c // a

位运算:

下表中a=60,b=13

运算符 描述 实例
& 按位与运算符:参与运算的两个值,如果两个相应位都是1,则该位的结果为1,否则为0 (a & b)输出结果为12,二进制解释0000 1100
| 按位或运算,只要对应的两个二进制位有一个为1时,结果位就为1 (a|b)输出结果61,二进制解释0011  1101
^ 按位异或运算,当两对应的二进制位相异,结果为1 (a^b)输出结果为49,二进制解释0011  0001
~ 按位取反运算,对数据的每个二进制位取反,及把1变为0,把0变为1 (~a)输出结果为-61,二进制解释:11000011在一个有符号二进制的补码形式
<< 左移动运算符:运算数的各二进制位全部左移动若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0 a<<2,结果为240,二进制解释:1111 0000
>> 又移动运算符,把>>左边的运算数的各二进制位全部右移动若干位,<<右边的数指定移动的位数 a>>2,结果为15,二进制解释:0000 1111

逻辑运算:

以下例子a=10,b=20

运算符 逻辑表达式 描述 实例
and x and y 布尔“与”,如果x为flase, x and y返回false,否则返回y的计算值 (a and b)返回20
or x or y 布尔“或”,如果x是非0,它返回x的值,否则它返回y的计算值 (a or b)返回10
not not x 布尔'非',如果x为true,返回flase,如果x为flase,则返回Ture not(a and b)返回flase

成员运算符:

运算符 描述 实例
in 如果在指定的序列中找到值返回Ture,否则返回Flase x在y的序列中,如果x在y的序列中,则返回Ture
not in 如果在指定的序列中没有找到值,返回Ture,否则返回Flase x不再y的序列中,如果x不再y的序列中,则返回flase

运算符优先级,由上到下,优先级从高到低

运算符 描述
** 指数(最高优先级)
~+- 按位反转,一元加号和减号
*/%// 乘、除、取模、取整数
+- 加减法
>> << 右移左移运算符
& 位‘and’
^| 位运算符
<=、<、>、>= 比较运算符
==、!== 等于不等于
=、 %=、 /=、 //=、 -=、 +=、 *=、 **= 赋值运算符
is 、is not 身份运算符
in、not in 成员运算符
not or and 逻辑运算符

列表

列表的创建

names = ['aaa', 'bbb', 'ccc']

列表的用法例子:

# 定义列表
names = ['aaa', 'bbb', 'ccc']
print(names)

# 列表的增加
names.append('ddd')
print(names)

# 列表的插入
names.insert(3,'111')
print(names)

# 列表的删除
#  方法1
names.remove('111')
print(names)
# 方法2
names.pop(3)
print(names)
# 方法3
del names[2]
print(names)

names[3] = "111"
print(names)

# 列表的统计
print(names.count("111"))

# 列表的扩展
names1 = ["xiao1", "xiao2"]
names.extend(names1)
print(names)

# 列表的反转
names.reverse()
print(names)
# 列表的排序
names.sort()
print(names)
# 列表的下标获取
print(names.index('aaa'))
# 列表的切片
print(names[0:3])

购物车程序

product_list = [
    ["iphone", 5800],
    ["mac", 12800],
    ["coffer", 30],
    ["bike", 2000]
]
shopping_list = []
gong_zi = input("工资:")
if gong_zi.isdigit():
    gong_zi = int(gong_zi)

while True:
    for i, items in enumerate(product_list):
       print(i,items[0],items[1])
    user_chose = input("商品编号:")
    if user_chose.isdigit():
        user_chose = int(user_chose)
        if user_chose < len(product_list) and user_chose >= 0:
            p_items = product_list[user_chose]
            if p_items[1] <= gong_zi:
                gong_zi -= p_items[1]
                shopping_list.append(p_items)
                print("您购买的商品是\033[31;1m%s\033[0m,您的余额是\033[31;1m%s\033[0m" % (p_items[0],gong_zi))
            else:
                print("\033[32;1m购买不起,你的余额:\033[0m\033[31;1m%s\033[0m" % gong_zi)
        else:
            print("\033[41;1m商品不存在\033[0m")
    elif user_chose == 'quit':
        print("-----shopping-------")
        for shopp in shopping_list:
            print(shopp)
        print("您的余额是\033[31;1m%s\033[0m" % gong_zi)
posted @ 2016-10-20 17:41  平_常_心  阅读(242)  评论(0编辑  收藏  举报