跳至主要内容

python3整理之基础语法1

http://ift.tt/2y0boSz

认识python

  1. 数据类型
    1. 数据是一切程序的基石,python虽然是弱类型语言,但是也不例外
    2. 数值类型
类型 英文

数据

整型

int

整数,无限大

浮点型

float

小数

负数

complex

复数由实部和虚部部分构成

  1. 字符类型
    1. python中没有单字符类型,只有字符串类型
      1. 被包裹在' '和" "之中
  1. 变量
    1. python是弱类型语言,不需要写数据类型,但是需要初始化
    2. 变量命名规则
      1. 跟c和c++一样
        1. 只能用数字,字母和下划线
        2. 数字不能用作变量开头
        3. 不能使用关键字
  2. 关键字
    1. 关键字就是在python中有特殊含义的单词

算术

引入

异常

控制

操作与状态

返回退出

定义

and

import

except

while

del

return

lambda

or

as

try

if

assert

yield

class

in

from

finally

else

True

continue

def

is

  

raise

elsif

False

pass

global

not

  

with

for

None

break

nonlocal

  1. 输入输出
    1. 输入 input
      1. 例子: a =eval(input('please input something '))
        1. 注:input默认接收为字符串,可以使用类型强转,也可以用eval自动转换
    2. 输出 print
      1. 例子:print(a)
        1. 注:python3 中print强制使用()

python基础语法

  1. 运算符
    1. 运算符举例

运算符类型

运算符

  

算术运算符

+ - * / % ** //

  

关系运算符

> <= < <= == != <>

  

位运算符

~ & | ^ << >>

  

逻辑运算符

and or not

  

赋值运算符

= += -= *= /= %=

  

身份运算符

is is not

  

成员关系运算符

in not int

  

  1. 不太常见的运算符
    1. ** 乘方

    >>> 5**2

    25

    >>>

    1. // 整除

    >>> 10/3

    3.3333333333333335

    >>> 10//3

    3

    >>>

  2. 运算符优先级
    1. 懒得写,加括号吧
  1. 选择结构
    1. if语句
      1. 单if语句
        1. if 表达式:

          语句序列

          else:

          语句序列

        2. 示例:

          nUserInput=eval(input("please input a number >"))

          if nUserInput%2==0:

          print("偶数")

          else:

          print("奇数")

      2. if -elif-else 结构
        1. if 表达式:

          语句序列

          elif 表达式:

          语句序列

          elif 表达式:

          语句序列

          else:

          语句序列

        2. 示例

          nUserInput=eval(input("please input a number >"))

          if nUserInput ==1:

          print("MON")

          elif nUserInput==2:

          print("TUE")

          elif nUserInput==3:

          print("WED")

          elif nUserInput==4:

          print("THU")

          elif nUserInput==5:

          print("FRI")

          elif nUserInput==6:

          print("SAT")

          elif nUserInput==7:

          print("SUN")

          else:

          print("woring number")

    2. 逻辑结果
      1. if语句中紧跟着的表达式应该是关系表达式,只有2种结果true 和false ,除了常见的关系外,还有下面比较隐晦的关系表达式

对象

结果

备注

""

False

空字符串

"Str"

True

常量恒为真

0

False

  

1

Ture

0的数字都为真

()

False

空元组

[]

False

空列表

{}

False

空字典

None

Flase

  

  1. 列表
    1. 什么是列表:列表是一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目
    2. 列表定义:使用方括号定义,中间可以填一些数据
      1. listObj=[1,2,3]
      2. 使用下标索引
        1. print(listObj[0])
      3. 修改某一个元素
        1. listObj[1]=10
      4. 删除列表中的某一个元素
        1. del listObj[0]
      5. 列表中可以储存不同的数据类型的元素
        1. listObj=[1,2,"hehe"]
      6. 列表中嵌套列表
        1. listObj2 =[1,2,3,[listObj]]
    3. 列表使用的常见函数
      1. 求列表元素的个数
        1. nNum=len(listObj)
      2. 列表的拼接
        1. listObj3 =listObj+listObj2
      3. 列表的重复
        1. listObj4=listObj*3+listObj*5
      4. 列表的比较
        1. python3 中放弃了cmp函数,operator库中有一些函数可以比较
      5. 求最大最小值
        1. max(listObj)
        2. min(listObj)
      6. 字符串转列表
        1. listObj5=list("hello this is string")
    4. list常用的自带函数
      1. 面向对象的语言是一切皆对象,python对这个理念的贯彻是更加彻底
      2. 既然一切都皆对象了,那么list肯定也是一个类,是类就肯定会有自带的方法

方法

功能

简单示例

append

输入数据到最后

listObj.append(10)

count

统计某个元素的出现次数

listObj.count(1)

extend

追加列表到新的列表后面

listObj.extend(listObj2)

index

查找某一个元素第一次出现的下标

listObj.index(10)

insert

在指定位置添加元素

listObj.insert(1,99) 在索引为1的位置添加数字值为99

pop

删除指定的元素, 并返回

b.pop(2) 参数为索引

remove

移除列表中某个值第一次匹配的项

listObj.remove(1) 传入的为要移除的值,不是索引

reverse

把列表凡响

listObj.reverse()

sort

把列表排序

listObj.sort()

 
 

  1. 元组
    1. 元组是不可变的序列,用圆括号来表示
    2. 元组跟列表相似,但是已经初始化就不能够修改
    3. 定义
      1. tupleObj=(1,2,3,4)
      2. 如果tuple中只有一个元素的时候,第一个元素后面要加逗号
        1. tupleObj2=(12,)
    4. 元素的使用基本上跟列表一样,但是元素中的项是不可改变的,更加的安全,如果列表中的值不需要改动,尽量适应tuple替代list
      1. 注:这里所说的项不可改变,可以用c语言中的指针来理解,是指向这个空间的指针不变,并不是这个空间内的数据不变(前提是数据不是常量)
  2. 字典
    1. 字典的特性
      1. 字典中的键是唯一的,如果出现2个相同的键,那么后出现的键会取代前面的键
      2. 访问不存在的键会报错
      3. 字典中的值没有限制,但是键有一定的限制
        1. 键是唯一的
        2. 键是不可变的,因为可以使用数字,元组,字符串,但是不能使用列表作为键
    2. 字典的定义
      1. 字典由键值对(key—value)组成,字典也被称为哈希表(hash)
      2. 定义
        1. dictObj={"a":2,"c"1}
          1. print(dictObj)
          2. print(dict["a"])
    3. 字典中常用的函数

方法

功能

简单示例

clear

清空字典

dictObj.clear()

copy

拷贝

dicObj2=dictObj.copy()

get

获取一个键的键值

dictObj.get("a")

setdefault

获取一个键的键值,不存在就设置一个

dictObj.setdefault("m",20 ) 取"m"的值,如果没有这个键就设置一个,值为20

__contains__(key) 

是否存在这个键,等同于xx in xx

dictObj.__contains__("a") 前后都是2个下划线

keys

以列表的形式返回所有的键

dictObj.keys()

values

以列表的形式返回所有的键对应的键值

dictObj.values()

update

把源地址添加到目地字典中

dictObj.update(dictObj2) 把字典obj2添加到obj1中

  1. 循环结构
    1. python中最简单的循环结构就是while循环
      1. 实例

      nCount=0

      while nCount<9:

      print("the count is :%d"%nCount)

      nCount +=1

      1. 运行结果

      the count is :0

      the count is :1

      the count is :2

      the count is :3

      the count is :4

      the count is :5

      the count is :6

      the count is :7

      the count is :8

    2. for循环
      1. python中的for语句跟传统的for语句不太一样
      2. 它接受序列或者迭代器作为其参数
      3. 每次循环取出其中一个参数
      4. 语法:
        1. for 循环索引值 in 序列:

          循环体

        2. for循环的执行过程
          1. 每次执行的时候,判断循环索引值是否还在序列中
          2. 如果在 ,就取出给循环体使用
          3. 如果不在,结束循环
        3. 实例

          for i in "hello world":

          print(i)

          for i in [1,2,3]:

          print(i)

          for i in range(1,10,2):

          print(i)

          1. 注:range()是生成一个序列的方法,常用可以传3个参数
            1. 参数1:起始值,包括这个值
              1. 可省略,不填默认为0
            2. 参数2:终点值,不包括这个值
              1. 不可省略
            3. 参数3:步长
              1. 可省略,不填步长默认为1
          2. 通过enumerate()函数遍历
            1. 对于一个可迭代/可遍历的对象(如列表,字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
              1. 实例

          listObj[1,2,3,5,6]

          for index, tem in enumerate(listObj):

          print(index,tem)

    3. 循环中的else 语句
      1. 了解即可,一般非常少用
      2. 例如 for 。。。else 语句
      3. 这种语句会在循环不是break 中断的时候,执行else语句
      4. 实例

      for i in range(10):

      if i%8==0:

      break

      esle:

      print("test else")

    4. continue 与break语句
      1. continue 跳过本条循环
      2. break 是跳出循环

       
       

       
       

The post python3整理之基础语法1 appeared first on cole.

http://ift.tt/eA8V8J Python September 11, 2017 at 08:52PM

评论

此博客中的热门博文

反Hook 之自己实现GetProcAddress和LoadLibraryA(c++ version)

http://ift.tt/2AocAD0 // 课上练习.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> //要实现的功能: /* 自己实现GerProcAddress LoadLibraryA */ //思路: /* GerProcAddress和LoadLibraryA都是在Kernel32.dll中的 首要的任务就是找到Kernel32.dll,然后遍历IAT就能找到这两个函数 现在首要的难点就是如何找到kernel32.dll() 通过dll的加载顺序可以找到,而且虽然需要使用未文档化的API,但是好在windgb可以直接看,而且用到的也并不是很多 懒得去晚上搜了,直接自己实现一个得了,作为演示,能用就行(最好还是搜一个正规的结构体) */ /* 0: kd> dt _TEB /a nt!_TEB +0x000 NtTib : _NT_TIB +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId : _CLIENT_ID +0x028 ActiveRpcHandle : Ptr32 Void +0x02c ThreadLocalStoragePointer : Ptr32 Void +0x030 ProcessEnvironmentBlock : Ptr32 _PEB //首先实现部分TEB结构体,因为只需要用的PEB的部分,所以实现到这就ok了 */ //构建 TEB typedef struct _TEB { //保证0x30是peb的结构体就ok了 struct _tem { DWORD a1; DWORD a2; DWORD a3; DWORD a4; DWORD a5; DWORD a6; DWORD a7; DWORD a8; DWORD a9; DWORD a10; ...

IDA动态调试ELF中遇到的问题(1)

https://ift.tt/2Gxnf2F 遇到 got SIGCHLD singal(child status has changed)...这种提示 singal fork了子进程 直接点yes,然后继续单步执行,出来提示 pass to application就行了 内存查看 用od习惯了之后,凡事都想右键看一下内存,但是IDA中好像没有那么如意, 目前只是在栈中右键发现有查看hex的选项 动态调试的时候的nop ida保存动态调试的时候修改的数据 方法一:在程序运行的时候保存 The post IDA动态调试ELF中遇到的问题(1) appeared first on cole . https://ift.tt/2q9Qf5g WHATEVER April 05, 2018 at 09:44AM

数据库(MySQL)编程之数据库和表的基本操作

http://ift.tt/2gOXg6X     数据库和表的基本操作 操作前的基本知识 基本 sql语句不区分大小写(关键字建议用大小写),但字符串常量区分大小写 sql语句可单行或多行书写,以; 结尾 关键字不能跨行或简写 可以用空格或者缩进来提高可读性 注释 sql标准 /**/ : 多行注释 "--":单行注释 mysql 标准: "#":单行注释 "COMMENT":为字段或列添加注释 创建和查看数据库 创建数据库 模板 CREATE DATABASE [IF NOT EXISTS ] db_name create_specification: IF NOT EXITSTS : 检查数据库是否存在,如果存在就不创建 creat_specification :创建条件 CHARACTER SET: 制定数据聚采用的字符集 COLLATE :制定数据库字符集的比较方式 DEFAULT :表示默认内容,即使没有制定该项,也有默认的值 # 创建数据库使用字符集为 UTF-8 ,使用规则为 uftf_bin CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE uft8_bin; 一般默认的数据库就是utf8 和utf8_bin的比较方式,因此一般创建数据库的时候都用 CREATE DATABASE db_name mysql> create database testdb; Query OK, 1 row affected (0.02 sec) 查看数据库 命令 SHOW DATABASES     mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | testdb | |...