0%

从零开始学python

从零考试学习python内容 99%来自于python大神 python-jack的知乎文章 再结合本人的实际情况进行学习,严格来说这是JACK老师的内容,只不过再此基础上,我增添了一些我在CTF解题过程中遇到的python脚本实际情况,再次感谢JACK老师

学习的内容来自:https://zhuanlan.zhihu.com/p/113640664

从零开始学Python - 第003课:Python语言元素之变量

  • 整型(int):Python中可以处理任意大小的整数,而且支持二进制(如0b100,换算成十进制是4)、八进制(如0o100,换算成十进制是64)、十进制(100)和十六进制(0x100,换算成十进制是256)的表示法。

0

  • 浮点型(float):浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法(如1.23456e2)。
  • 字符串型(str):字符串是以单引号或双引号括起来的任意文本,比如'hello'"hello"
  • 布尔型(bool):布尔值只有TrueFalse两种值,要么是True,要么是False

变量命名

对于每个变量我们需要给它取一个名字,就如同我们每个人都有自己的名字一样。在Python中,变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则。

硬性规则:

  1. 变量名由字母、数字和下划线构成,数字不能开头。需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是像!@#这些特殊字符是不能出现在变量名中的,而且我们强烈建议大家尽可能使用英文字母
  2. 大小写敏感,简单的说就是大写的A和小写的a是两个不同的变量。
  3. 变量名不要跟Python语言的关键字(有特殊含义的单词,后面会讲到)和保留字(如函数、模块等的名字)发生重名的冲突

非硬性规则:

  1. 变量名通常使用小写英文字母,多个单词用下划线进行连接。
  2. 受保护的变量用单个下划线开头(后面会讲到)。
  3. 私有的变量用两个下划线开头(后面会讲到)。

在Python中可以使用type函数对变量的类型进行检查。程序设计中函数的概念跟数学上函数的概念是一致的,数学上的函数相信大家并不陌生,它包括了函数名、自变量和因变量。如果暂时不理解这个概念也不要紧,我们会在后续的内容中专门讲解函数的定义和使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
"""
使用type()检查变量的类型

Version: 0.1
Author: 骆昊
"""
a = 100
b = 12.345
c = 'hello, world'
d = True
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'str'>
print(type(d)) # <class 'bool'>

1

不同类型的变量可以相互转换,这一点可以通过Python的内置函数来实现。

  • int():将一个数值或字符串转换成整数,可以指定进制。

  • float():将一个字符串转换成浮点数。

  • str():将指定的对象转换成字符串形式,可以指定编码。

  • >>> ord('A')
    65
    >>> chr(66)
    'B'
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    - `chr()`:将整数转换成该编码对应的字符串(一个字符)。

    - `ord()`:将字符串(一个字符)转换成对应的编码(整数)。

    下面的例子为大家演示了Python中的类型转换。

    ```python
    """
    Python中的类型转换

    Version: 0.1
    Author: 骆昊
    """
    a = 100
    b = 12.345
    c = 'hello, world'
    d = True
    # 整数转成浮点数
    print(float(a)) # 100.0
    # 浮点型转成字符串 (输出字符串时不会看到引号哟)
    print(str(b)) # 12.345
    # 字符串转成布尔型 (有内容的字符串都会变成True)
    print(bool(c)) # True
    # 布尔型转成整数 (True会转成1,False会转成0)
    print(int(d)) # 1
    # 将整数变成对应的字符 (97刚好对应字符表中的字母a)
    print(chr(97)) # a
    # 将字符转成整数 (Python中字符和字符串表示法相同)
    print(ord('a')) # 97

2


拓展

如果知道字符的整数编码,还可以用十六进制这么写str

1
2
>>> '\u4e2d\u6587'
'中文'

要计算str包含多少个字符,可以用len()函数:

1
2
3
4
>>> len('ABC')
3
>>> len('中文')
2

在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:

1
2
3
4
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

3


从零开始学Python - 第004课:Python语言元素之运算符

4

说明: 上面这个表格实际上是按照运算符的优先级从上到下列出了各种运算符。所谓优先级就是在一个运算的表达式中,如果出现了多个运算符,应该先执行哪个运算再执行哪个运算的顺序。在实际开发中,如果搞不清楚运算符的优先级,可以使用圆括号来确保运算的执行顺序。

算术运算符

Python中的算术运算符非常丰富,除了大家最为熟悉的加减乘除之外,还有整除运算符、求模(求余数)运算符和求幂运算符。下面的例子为大家展示了算术运算符的使用。

1
2
3
4
5
6
7
print(321 + 123)     # 加法运算
print(321 - 123) # 减法运算
print(321 * 123) # 乘法运算
print(321 / 123) # 除法运算
print(321 % 123) # 求模运算 就是取余数运算
print(321 // 123) # 整除运算
print(321 ** 123) # 求幂运算

4

赋值运算符

赋值运算符应该是最为常见的运算符,它的作用是将右边的值赋给左边的变量。下面的例子演示了赋值运算符和复合赋值运算符的使用。

1
2
3
4
5
6
7
8
9
10
11
"""
赋值运算符和复合赋值运算符

Version: 0.1
Author: 骆昊
"""
a = 10
b = 3
a += b # 相当于:a = a + b
a *= a + 2 # 相当于:a = a * (a + 2)
print(a) # 算一下这里会输出什么

比较运算符和逻辑运算符

比较运算符有的地方也称为关系运算符,包括==!=<><=>=,我相信没有什么好解释的,大家一看就能懂,需要提醒的是比较相等用的是==,请注意这里是两个等号,因为=是赋值运算符,我们在上面刚刚讲到过,==才是比较相等的运算符;比较不相等用的是!=,这不同于数学上的不等号,Python 2中曾经使用过<>来表示不等关系,大家知道就可以了。比较运算符会产生布尔值,要么是True要么是False

逻辑运算符有三个,分别是andornotand字面意思是“而且”,所以and运算符会连接两个布尔值,如果两个布尔值都是True,那么运算的结果就是True;左右两边的布尔值有一个是False,最终的运算结果就是False。相信大家已经想到了,如果and左边的布尔值是False,不管右边的布尔值是什么,最终的结果都是False,所以在做运算的时候右边的值会被跳过(短路处理),这也就意味着在and运算符左边为False的情况下,右边的表达式根本不会执行。or字面意思是“或者”,所以or运算符也会连接两个布尔值,如果两个布尔值有任意一个是True,那么最终的结果就是True。当然,or运算符也是有短路功能的,在它左边的布尔值为True的情况下,右边的表达式根本不会执行。not运算符的后面会跟上一个布尔值,它的作用是得到与该布尔值相反的值,也就是说,not后面的布尔值如果是True,运算结果就是False;而not后面的布尔值如果是False,运算结果就是True

欢迎关注我的其它发布渠道