Python Study

Posted on 2021-09-30 15:06  -=-  阅读(68)  评论(0)    收藏  举报

输入语句

python中,通过input函数获取用户键盘输入

input函数的参数是字符串,它是屏幕提示语

# 变量赋值,=两边空格可有可无
>>> user = input('username: ')   # 用户输入内容保存到变量user中
username: tom
>>> user    # 使用变量
'tom'

print('name','page','IOQQ',sep='-',end='\n\n')
sep=(*) 显示输出用*分隔,end=‘\n\n’换行
sep和end配合使用

# input读入的数据都是字符串类型。相同类型的数据才能运算 >>> num = input("number: ") number: 10 >>> num + 5 # num是字符串,不能和数字进行运算 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str, not int >>> type(num) # 查看num的类型 <class 'str'> >>> int(num) + 5 # int函数将字符串转成整数 15 >>> num + str(5) # str函数将对象转成字符串 '105' >>> num + "5" #用引号都会变成字符串 '105'

处理比较复杂的字符用三个单引号或三个双引号
‘’‘ *** ’‘’(开头结尾也可用为注释)
“”“ *** ”“”

转义字符
#反斜杠(\)转义特殊字符
\n 换行

原始字符
r|R
print(r/R'\\n')
  \\n

abs绝对值取整
abs(-1) :1

数据类型

整数(int)  定义整数类型不用加引号
取值 1 or -1 or 0

浮点形

字符串(str) 字符串无法所数学运算 其他类型加上“”会边成字符类型
两个单引号 or 两个双引号
a='hello' b="bug"

转译字符(\)
\n 换行 or \t 制表符(空格)
在字符串里+r,内容不转移
单引号只能一对单引号,或者用转译字符‘my\’list‘
c1="my\
test" #是同一行

布尔型(bool)
只有True and false 两种值 一用来比较运算和条件表达式

 基本运算

计算长度:len
截取:string(开始:结束:步长) [开始:结束) *从0开始数

#print(len(*))
test=python,890
a=test[2:8:2]=to,
a2=test[4:]=on,890 #4往后的列出
a3=test[:4]=pyth #4往前的列出

运算符:
  • 算数运算符:
    1. 基础运算符
      • //除完取整
    1. 取余数
      • 运算
      • 分类
        • %2 0->偶 | 1->奇 and %3可以把数分成三类
    1. 取整
    2. 幂次 **
  • 赋值运算符:
    • 基础运算
      • a=4;b=a;print(b)=4
    • 符合运算
      • a=4;b=5;b+=a;print(b)=9 #b=b+a *加减乘除类似
  • 比较(关系)运算符: #返回值为布尔类型
    • > or < or >= or <= or == or !=
  • 逻辑运算符:
    • 与 #并且
    • 或 #或者
    • 非 #取反
  • 类型转换:
    • 数值 --> 字符
      • str
      • repr print(repr(*)输出后会加上’‘号
    • 字符 -->数值
      • int 整数 test=int(*)
      • float 小数 test2=float(*) #*.0

基础语法

输入
  input(”要输入的内容“)
  a=input("吃了:")
  print=(”你输入的是:“,a)
  #print=(a*2)=1010 #字符串*2会输出a两次
  #利用str 和 int 输出 a=1;b=2
  print
  print("这是%个%",(n,s)
  print("这是{}个{}".format(n,s)

数据结构

列表
  定义
    a=[1,2] #有值列表
    b=[] #空列表
  访问
    单个元素
  • a=123456
  • print(a[2])=3 #正索引 从前往后 ,从0开始
  • print(a[-2])=5 #负索引从后往前,从-1开始
  • a[2]=444 #把原a2的数字换成666
    切片
  • a[开始:结束:步长]
    添加
  • append函数 #a.append(4) 在列表最后边添加4
    删除
  • del函数 #del a[索引]

元组

    创建

  • a=(1,2,3,4,5,6,7) #创建后不可改变元素
  • b=(1,) #创建单个值的元组,后边+(,),他才是一个元组,否则是int类型

    访问

  • 与列表访问方式相同 #print(a[1])=2
  • 索引访问
  • 切片访问
  • 不能修改值

    操作

  • 删除元组 del x
  • 连接 a=(1,2);b=(3,4);print(a+b)=1234
  • 计算长度 len(a)
  • 迭代 a=(1,2) print(a*2)=(1,2,1,2)

字典

  定义

  • 列表+元组 #值对
  • key:value Or 键:值 对

  创建

  • a={
  • "Name1":11,
  • "Name2":22
  • }
  • print(a)={'Name1':11,'Name2':22}

  引用

  • print(a["key"])

  修改

  • a["key"]=要修改的新值

  增加

  • a["新的key"]=* #直接添加新的key

  删除

  • del a["要删除的key"]

集合

  定义 #不允许重复的值存在

  • 直接使用{}创建
    • mySet = {"test1","test2","test3"}
  • 使用set()创建
    • mySet = set([1,2,3,4])

  添加

  • 集合的名字.add(要添加的元素)

  删除

  • del: del 集合名  #删除集合
  • ppop(): 集合名.pop()  #随机删除一个元素  #如果是数字,可能会从最小的删除
  • remove(): 集合名.remove(要删除的元素)  #删除指定元素
  • clear(): 集合名.clear()  #删除全部元素,但是保留集合

  运算

  • 交集:&
    • setname1 & setname2  #把两个合集有的集在一起
  • 并集:|
    • setname1 | setname2  #把两个集合不重复的合并在一起
  • 差集:-
    • setname1 - setname2  #1减去2有的,1剩下的集合

分支结构

 单分支

if 条件表达式:

    事件A

#设置交换 s,y=y,s   s和y的值互相对换

双分支

if 条件表达式:

    事件A

else:

    事件B

多分支

if 条件表达式1:

    事件A

elif 条件表达式2:

    事件B

else:

    事件C

  嵌套

  if 条件表达:

  elif 条件表达式:

    if 条件表达式:

    else:

  else:

内联if(if表达式,条件表达式等)

语法

  • 基本语法
    • 值1 if 条件 else 值2     #if else 写在同一行
    • 先对条件判断,条件成立返回值1,否则返回值2
  • 语句结构

计算最大值

  • a=* & b=*
  • c = a if a > b else b

计算绝对值

  • a=*
  • c=a if a>=0 else -a
  • print(c)
  • #大于,对应关系:小于等于,不仅仅是小于
  • #小于,对应关系:大于等于,不仅仅是大于

 函数

自定义函数:
def 函数名(参数):
  函数体
[return 返回值]

标准模块

os:提供了操作系统交互的函数
sys:系统相关的参数和函数
time:时间相关的函数
  print(time.time()) #返回当前时间的时间戳
  print(time.localtime()) #当前的时间 
  • 0 tm_year (年)
  • 1 tm_mon (月)
  • 2 tm_mday (日)
  • 3 tm_hour (时)
  • 4 tm_min (分)
  • 5 tm_sec (秒)
  • 6 tm_wday(weekday),0时周一,以此类推
  • 7 tm_yday(一年中的第几天)
  • 9 tm_isdst(是否时夏令时),0非夏令时、1夏令时、-1不确定

  time.sleep(3) #中间停顿3秒 math:提供对浮点数学的底层C库函数的访问 random:提供进行随机选择的工具 re:为高级字符串处理提供正则表达式工具

 正则表达式

import re
a = '
reg = '******'
re.findall{reg,s) #
元字符
. 代表的是换行符(\n,\r\n)以外的任意字符|
\w 匹配字母或数字或下划线或汉字的字符
\s 匹配任意空白符
\d 匹配数字
^ 匹配字符串开始
$ 匹配字符串结束
反义代码 #与元字符相反的代码
\W 匹配任意不是字母数字下划线汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意不是数字的字符
限定符 #某一个逻辑集合所出现的次数
* 代表重复0次或者多次
+ 代表重复1次或者多次
? 代表重复0次或者1次
{n} 重复n次的意思
{n,} 重复n次或者更多次
{n,m} 重复n次到m次
分组匹配
s = "我的qq号码是:333,mypostcode: 10000"
reg = "(\d{8}).*(\d{5})"
result = re.search(reg,s)
result
##<_sre.SRE_ Match object; span=(8,35), match='333,my postcode: 10000'>
result.group()
##' 333,my postcode: 10000'
result.group(0)
##' 333,my postcode: 10000'
result.group(1)
##'333'
result.group(2)
##'10000'
贪婪与非贪婪
贪婪:尽可能多的匹配
reg = '\d*'
reg = 'i?' 一个一个尽可能多的匹配
非贪婪:尽可能少的匹配 ??:代表匹配一次
在元字符后边加上非贪婪匹配操作符,这个时候就是非贪婪匹配,就是尽可能少的匹配