Python基础学习(一)

安装完Python并且调试成功第一个Hello word,下面通过廖雪峰网站开始学习python基础。学习网址:https://www.liaoxuefeng.com

一、格式化输出

  格式化输出就相一个占位符一样在一个字符串之中,最后通过可变的参数替换占位符。最终输出结果;Python中,采用的格式化方式和C语言是一样的都是通过 % 实现;

  常用的占位符有:

  

   案例:

print('这是整数%2d, 这个你知道吗%02d' %(1, 2))
print('这是整数%d, 这个你知道吗%d' %(1, 2))
print('这是整数%d, 这个你知道吗%d' %(100, 200))

  输出结果:

这是整数 1, 这个你知道吗02
这是整数1, 这个你知道吗2
这是整数100, 这个你知道吗200

  分析:以上这些是格式化输出整数,%2d  代表的是占2位输出的坑,所以在输出结果可以看出第一个输出前面是一个空,另外 %02d  代表的是两位输出,用0补给占位,即可得到02的输出。

print('%.2f' % 3.1415926)

  输出:3.14 

  分析:浮点数保留两位小数的写法

  如果不确定用那一个种格式化输出,记住%s 它永远起作用,它会把任何数据类型转换为字符串。

print('Age: %s. Gender: %s' % (25, True))

  输出:Age: 25. Gender: True

  format() 也是一种格式化输出,它会将传入的参数依次嗲换字符串内的占位符{0}  {1}  {2} ...  

print('这是一个坑:{0}, 这是浮点数坑:{1:.1f}%, 这是其他的坑:{2}'.format('我是坑', 17.125, 100))

  输出:这是一个坑:我是坑, 这是浮点数坑:17.1%, 这是其他的坑:100

 

二、使用list  和 tuple  

   List 是一种有序集合,可以添加、删除其中的元素。   

#LIST学习
#创建一个list
listInfo = ['aaa', 'bbb', 'ccc'];
print( listInfo )

#计算list的长度 len()
print( len( listInfo ) )

#用索引访问list中的元素
print( listInfo[2] )

#通过负数倒着取元素
print( listInfo[-1] )

#list是一个可变的有序表
#往list里面追加元素 append()
listInfo.append('ddd')
print( listInfo )

#也可以将插入的元素指定到指定的位置 insert()
listInfo.insert(2, 'cici')
print( listInfo )

#删除list末尾的元素 pop(i) i是可变的位
listInfo.pop()
print( listInfo )

#把某个元素替换成别的元素
listInfo[2] = 'replace'
print( listInfo )

#list的元素类型可以不同 True 区分大小写
setList = ['aaa', 111,  True]
print( setList )

#list元素也可以是另外一个元素
newList = ['java', 'php', setList ]
print( newList )

#拿取多维list中的元素
print( newList[2][1] )

  输出结果如下:  

['aaa', 'bbb', 'ccc']
3
ccc
ccc
['aaa', 'bbb', 'ccc', 'ddd']
['aaa', 'bbb', 'cici', 'ccc', 'ddd']
['aaa', 'bbb', 'cici', 'ccc']
['aaa', 'bbb', 'replace', 'ccc']
['aaa', 111, True]
['java', 'php', ['aaa', 111, True]]
111

  tuple 另外一种列表叫元组:tuple. tuple和list 比较相似,但是tuple 一旦初始化就不能修改

       tuple 并没有 append()   insert() 方法,因为它不可变。只能通过键位获取。 相对list 来说比较安全。特别注意的是在使用tuple的时候,tuple的元素就必须确定下来。

#tuple
tupleInfo = ( 1, 2 )
print( tupleInfo )

  输出:(1, 2)

#定义一个空的tuple
tupleInfo = ()
print( tupleInfo )

  输出:()

#定义一个只有1个元素的tuple
tupleInfo = (1111)
print( tupleInfo )

  输出:1111

  说明:如果下面这样定义才是真正的一个tuple,表示只有一个元素的tuple 

tupleInfo = (1111, )
print( tupleInfo )

  输出:(1111,)

  下面看这个案例,间接性的通过list去改变tuple 其实,变的是可变的list 而 tuple 并没有变,只是间接性的像变了一样。

mylist = ['php', 'java', 'c#']
tupleInfo = (111,222,333, mylist )
print( tupleInfo )
tupleInfo[3][1] = 'mysql'
print( tupleInfo )

  输出:(111, 222, 333, ['php', 'java', 'c#'])    (111, 222, 333, ['php', 'mysql', 'c#'])

 

三、条件判断 循环

x = 70;
if x <60 :
    print( '这个分数小于60了' )
elif x >= 60:
    print( '这个分数大于60了' )
else:
    print('优秀了呢')

  python 需要分为两种,第一种是 for ... in  的方式 将 list 货 tuple 总的数据列出来; 第二种是while的方式,只要满足条件就不断循环;

  第一种案例:

for item in ['111', '222', '333']:
    print( item )

  输出:  111

      222
        333

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

  输出:2500

  说明: 在循环过程中可以根据条件提前结束循环 break,即可。或者根据条件继续循环 contionue 即可。

 

四、dist  和  set

  dist 可以理解成map, 使用 键->值 对的形式存储,查询数据相对较快

#dict 和 set 的使用
dictInfo = {'name':'cici', 'age': '25', 'sex':'女'}
print(dictInfo)
print(dictInfo['name'])

  输出:{'name': 'cici', 'age': '25', 'sex': '女'}

      cici

dictInfo = {'name':'cici', 'age': '25', 'sex':'女'}
print(dictInfo)
dictInfo['name'] = 'dada'
print(dictInfo)

  输出:{'sex': '女', 'age': '25', 'name': 'cici'}

        {'sex': '女', 'age': '25', 'name': 'dada'}

  说明:如果定位查找某一个元素,如果元素不存在是会报错滴;

#验证key不存在的的方法
print( 'name' in dictInfo )
print( 'test' in dictInfo )
print( dictInfo.get('name') )
print( dictInfo.get('test') )
print( dictInfo.get('test', '没有') )

  输出:

    True
    False
    dada
    None
    没有

  删除的案例如下:

print( dictInfo )
dictInfo.pop('name')
print( dictInfo )

  输出:    {'name': 'dada', 'sex': '女', 'age': '25'}

      {'sex': '女', 'age': '25'}

       和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。

  而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

   set   

    set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。

#set
#初始化set赋值
setInfo1 = set( [ 111, 222, 333 ] )
print( setInfo1 )

#set没有vlue 只有key 切 key 不可重复
setInfo2 = set( [111,222,333,333,222] )
print( setInfo2 )

#给set添加元素
setInfo2.add('444')
print( setInfo2 )

#删除set元素
setInfo2.remove('444')
print( setInfo2 )

  输出:

    {333, 222, 111}
    {333, 222, 111}
    {'444', 333, 222, 111}
    {333, 222, 111}

 五、调用函数

#调用函数
print( abs(100 ) )
print( abs(-100) )
print( max(1,2,3,4,5,0,-1,-3) )
print( int('123') )
print( float('12.34') )
print( str(12.34) )
print( bool(1) )
print( bool('') )

  输出:

    100
    100
    5
    123
    12.34
    12.34
    True
    False

六、定义函数  

#定义函数
def myFun(x):
    if x <= 60:
        print('小于60')
    else :
        print('大于60')

print( myFun(30) )

  输出:小于60

   1)定义一个空函数,且什么都不做

def nop():
    pass

  pass的作用就是什么都不做也不会出错,如果没有pass会出错的,所以pass就是占了一个坑

   2)检测不恰当的参数

def myFun(x):
    if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x

  加了参数检查后,如果传入错误的参数类型,函数就可以抛出一个错误

   输出:

Traceback (most recent call last):
  File "/mnt/hgfs/webspace/pythonStudy/one.py", line 240, in <module>
    myFun('你好')
  File "/mnt/hgfs/webspace/pythonStudy/one.py", line 234, in myFun
    raise TypeError('bad operand type')
TypeError: bad operand type

  2)返回多个参数

import math
def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

x, y = move(100, 100, 60, math.pi / 6)
print( x, y)

  import math语句表示导入math包,并允许后续代码引用math包里的sincos等函数

七、函数参数

  可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple

#函数的参数
#默认参数,可变参数
#默认参数不做解释,可变参数案例如下
#可变参数就像定义一个list或者tuple一样,只是在参数的前面加了一个*

def myFun(*number):
    for item in number:
        print( item )

myFun(111,222,333)

  输出:

    111
    222
    333

#关键字参数
#而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
def myFun( name, age, **kw) :
    print('name:',name )
    print('age:', age)
    print('kw:', kw)
myFun('cici', 18, nihao = 'aaaa')

  输出:

    name: cici
    age: 18
    kw: {'nihao': 'aaaa'}

 

posted @ 2018-08-12 17:34  清零者  阅读(1447)  评论(0编辑  收藏  举报