Python基础语法

@sixing  December 31, 2019

Python简介

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
  • Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。
  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
  • Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python特点

  • 1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • 2.易于阅读:Python代码定义的更清晰。
  • 3.易于维护:Python的成功在于它的源代码是相当容易维护的。
  • 4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
  • 5.互动模式:互动模式的支持,您可以从终端输入并获得结果的语言,互动的测试和调试代码片断。
  • 6.便携式:Python可以运行在多种硬件平台和所有平台上都具有相同的接口。
  • 7.可扩展:可以添加低层次的模块到Python解释器。这些模块使程序员可以添加或定制自己的工具,更有效。
  • 8.数据库:Python提供所有主要的商业数据库的接口。
  • 9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
  • 10.可扩展性:相比 shell 脚本,Python 提供了一个更好的结构,且支持大型程序。

第一个程序

print("你好 世界")
#单行注释
"""
多行注释
多行注释
"""

变量类型

n=100 #整型
m=15.5 #浮点  

str="hello world" #单双引号相同 字符串处理
print (str) 
print (str[0])
print (str[2:4]) #3-4个字符
print (str*2)#输出两遍
str+="  aa" #字符串连接
print(str)

list=['abcd',756,'abc','888'] #列表处理
print(list)
print(list[2])
list[2]=1000
print(list[2])
print(list[1:3]) #输出2-3
print(list*2)

tuple=('abcd',756,'abc','888') #元组只读列表 不可修改 操作同列表
print(tuple)
print(tuple[0])
print(tuple[1:3]) #输出2-3
print(tuple*2)

运算

a=10
b=3
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a//b) #整除
print(a%b)
print(a**b) #幂运算

# &与 |或 ^异或 ~取反
# and布尔与 or布尔或 not布尔非
# in 如果在指定的序列中找到值返回True,否则返回False。
# not in 如果在指定的序列中没有找到值返回True,否则返回False。

条件语句

n=int(input("请输入n的值")) #输入 n的类型依靠你输入的类型决定
print(n) #输出
if n==5 :  #if else 通过缩行代替括号
    print("n==5\n")
elif n<=5 :
    print("n<=5\n")
else :
    print("chipi\n")

循环

while循环

'''
while 判断条件:
    执行语句……
'''
n=5
while n>=1:
    n-=1
    print("awsl")

for 循环

'''
for iterating_var in sequence:  生成迭代器当处于序列内时则执行
   statements(s)
'''
for letter in "python":
    print(letter)

fruits=["banana","apple","orane"]
for i in range(len(fruits)): #索引迭代
    print (fruits[i])

for i in range(10,20): #循环嵌套
    for j in range(2,i):
        if i%j==0:
            print("%d是%d的因子"%(j,i))
            break; #break
    else:
        print(i,"是一个质数")

函数

'''
def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]
'''
#函数定义
def printme(str):
    print(str)
    return
#函数调用
printme("5678")

# 不定长参数
def printinfo( arg1, *vartuple ):
   print ("输出: ")
   print (arg1)
   for var in vartuple:
      print (var)
   return;
 
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

#缺省参数
def printinfo( name, age = 35 ):
   print ("Name: ", name)
   print ("Age ", age)
   return
 
#调用printinfo函数
printinfo( age=50, name="miki" )
printinfo( name="miki" )

正则表达式

作用:检查一个字符串是否与某种模式匹配

re.match函数

'''
re.match(pattern, string, flags=0)
pattern    匹配的正则表达式
string    要匹配的字符串。
flags    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
group(num=0)    匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()    返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

'''
import re
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("No match!!")

re.search函数

'''
re.search(pattern, string, flags=0)
pattern    匹配的正则表达式
string    要匹配的字符串。
flags    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
匹配成功re.search方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
group(num=0)    匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()    返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
'''
import re
line = "Cats are smarter than dogs";
searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
   print ("searchObj.group() : ", searchObj.group())
   print ("searchObj.group(1) : ", searchObj.group(1))
   print ("searchObj.group(2) : ", searchObj.group(2))
else:
   print ("Nothing found!!")

re.match与re.search的区别

'''
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None; //整个串是否匹配
re.search匹配整个字符串,直到找到一个匹配。//查找有没有子串符合
'''
import re
line = "Cats are smarter than dogs";
matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print ("match --> matchObj.group() : ", matchObj.group()) 
else:
   print ("No match!!") 

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print ("search --> matchObj.group() : ", matchObj.group()) 
else:
   print ("No match!!")
'''
输出:
No match!!
search --> matchObj.group() :  dogs
'''

re.split函数

'''
split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
re.split(pattern, string[, maxsplit=0, flags=0])
pattern    匹配的正则表达式
string    要匹配的字符串。
maxsplit    分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
flags    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志
'''

re.finditer函数

'''
在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
re.finditer(pattern, string, flags=0)
pattern    匹配的正则表达式
string    要匹配的字符串。
flags    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
'''

flags选项

  • re.I 忽略大小写
  • re.L 表示特殊字符集 w, W, b, B, s, S 依赖于当前环境
  • re.M 多行模式
  • re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
  • re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库
  • re.X 为了增加可读性,忽略空格和 # 后面的注释

re.sub函数

'''
re.sub(pattern, repl, string, max=0)
返回的字符串是在字符串中用 RE 最左边不重复的匹配来替换。如果模式没有发现,字符将被没有改变地返回。
可选参数 count 是模式匹配后替换的最大次数;count 必须是非负整数。缺省值是 0 表示替换所有的匹配。
'''
import re
phone = "2004-959-559 # 这是一个国外电话号码"
# 删除字符串中的 Python注释 
num = re.sub(r'#.*$', "", phone)
print ("电话号码是: ", num)
# 删除非数字(-)的字符串 
num = re.sub(r'\D', "", phone)
print ("电话号码是 : ", num)

正则表达式符号

参考常用正则表达式大全


添加新评论