python是一门动态解释型的强类型定义语言(先编译后解释)
动态类型语言
动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来
解释型
程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行,总言之,就是不断地解释、执行、解释、执行
强类型
一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了
优点:效率高,团队开发,移植,拓展,嵌入
缺点:速度慢,不能加密,禁止多线程并行进程
告诉解释器用什么编码执行
#!/usr/bin/env python
# -*- coding: utf-8 -*-
进制
二进制 01
八进制 01234567
十进制 0123456789
十六进制 0123456789ABCDEF
注释
#单行注释
'''多行注释'''
用户输入:input('用户输入内容')
打印屏幕
name = 'sunlizhao'
print('I am %s'%(name))
%s是字符串 %d是数字 %f是浮点型
数据类型
数字
int(整型),long(长整形),float(浮点型),complex(负数)
布尔
真或假, 1或0, true或false
字符串
name = 'sunlizhao'
print('I am %s'%(name))
%s是字符串 %d是数字 %f是浮点型
字符串操作:
name.capitalize() 首字母大写
name.casefold() 大写全部小写
name.center(50,'-') 在name的两边输出 - 字符
name.count('s') 统计s出现的次数
name.encode() 字符编码为bytes格式
name.endswith('lz') 判断字符串是否为lz结尾
's\tlz'.expandtabs(10) 讲\t转换为多长的空格
name.find('sl') 查找sl,找到返回其索引, 找不到返回-1
format :
>>> msg = "my name is {}, and age is {}"
>>> msg.format("alex",22)
'my name is alex, and age is 22'
>>> msg = "my name is {1}, and age is {0}"
>>> msg.format("alex",22)
'my name is 22, and age is alex'
>>> msg = "my name is {name}, and age is {age}"
>>> msg.format(age=22,name="ale")
'my name is ale, and age is 22'
format_map
>>> msg.format_map({'name':'alex','age':22})
'my name is alex, and age is 22'
num1 = [11,22,33]
num2 = (11,22,33)
#num3 = {'a' = 11, 'b' = 22, 'c' = 33}
myStr = 'hello word itcast and'
#字符串操作
print (myStr)
print(myStr.find("word"))#找不到返回-1,找到返回下标
print(myStr.rfind("itcast"))#从右面查找,返回下表
print(myStr.index('word'))#同find,找不到会出现异常
print(myStr.rindex("itcast"))#同find
print(myStr.count('e'))#查找出现的次数
print(myStr.replace('word','Word',1))#将word替换为Word(从左到右替换一个)
print(myStr.split(' '))#将字符串中的空格切割掉
print(myStr.capitalize())#字符串第一个字符大写
print(myStr.title())#首字母大写
print(myStr.lower())#所有大写字符转换为小写
print(myStr.upper())#所有小写字母转换为大写
lyric = " 想陪你一起看大海 "
print(lyric.center(50))#在50个字符中居中
print(lyric.ljust(50))#靠左
print(lyric.rjust(50))#靠右
print(lyric.strip())#清除左右两侧空格
print(lyric.lstrip())#清楚左侧空格
print(lyric.rstrip())#清楚右侧空格
print(lyric.partition("一起"))#以'一起'为中心分割成三段
print(lyric.rpartition("一起"))#从右边开始查找(元组)
file_name = "xxxx.txt"
print(file_name.endswith(".txt"))#判断是否是.txt为后缀
print(file_name.startswith("xxxx"))#判断是否是xxxx为开头
numbe = "q"
print(numbe.isalpha())#判断是否是字母
print(numbe.isdigit())#判断是否是数字
print(numbe.isalnum())#判断是否是数字或者字母
print(numbe.isspace())#判断是否是纯空格
a = ["aa","bb","cc"]
b = " "
print(" ".join(a))#将a中的字符串用b连接起来
列表,元祖操作
定义列表
names = ['孙礼昭','slz','sunlizaho']
下标从0开始names[0],names[1],names[2]
倒取从-1开始 names[-1],names[-2],names[-3]
切片:取多个元素
步长为2
names[::2]
如果想取到最后一个元素,不能写-1
names[0:]
追加:
从最后添加
names.append('我是新来的')
插入:
通过索引插入
names.insert(0,'我是第一')
修改:
通过索引修改
names[0] = '我才是第一'
删除:
强删list
def names
清空list
names.clear()
按照下标删除元素内容
def names[0]
names[0] = []
删除指定元素
names.remove('slz')
删除列表最后一个值
names.pop()
拓展:
list1的内容添加到names的后面
names.extend(list1)
统计:
统计names中slz出现的次数
names.count('slz')
排序/翻转:
按照ascll码排序,注意py3不同数据类型不能排序
names.sort()
将整个list倒序(不排只倒)
names.reverse()
获取下标:
根据元素内容获取下标(只返回找到的第一个)
names.index('slz')
元组:tuple一旦创建,不得修改
t = (a,b,[c,d])
tt = t[2]
tt[0] = e
tt[1] = f
print(tt)
不是说不能变吗? 现在为什么又可以变了呢!
tuple的不变是指向不变,指向的list不能变,但是里面的内容是可以更改的