Python 快速扫盲—— 基础篇

本文首发于:https://www.xerrors.fun/python-basics/

大家都是有一定的 C语言的基础的,所以就先罗列一下 python 与 c 语言的区别;从某种角度上来说,python 是一种脚本语言

写在前面

以下演示脚本基于 Python 3.7.2

你需要在电脑上面安装并配置好自己的 Python 版本 Windows | macOS

编辑器推荐使用 VS Code 加上响应的插件 python 即可,或者使用集成开发工具语言 Pycharm。使用更加现代化的开发工具可以大大提高你的开发效率以及 Debug 能力。

python 与 C 语言的区别

大家都是有一定的 C语言的基础的,所以就先罗列一下 python 与 c 语言的区别;从某种角度上来说,python 是一种脚本语言,代码书写速度比较快,也就是说,实现同样的功能 python 所需要写的代码更少,但是在执行速度方面,python 的速度跟 c 相比速度会慢一些;即使这样,耐不住他写着方便啊!

// 这是一段 C 语言代码
# include <stdio.h>
void learning(char* name){
    printf("%s start to learn reverse!\n", name);
}

int main() {
    char name[7] = "Xerrors"; 
    printf("I want to learn reverse!!!\n");
    learning(name);
    return 0;
}
# 这是一段 python
def learning(name):
    print("%s start to learn reverse!" % name)

name = 'Xerrors'
print("I want to learn reverse!!!")
learning(name)

两段代码都可以实现输出

I want to learn reverse!!!
Xerrors start to learn reverse!

但是从这两段代码中可以简单看到这两个语言的一些区别:

  • python 中,数据类型这一概念在编程时被弱化了,体现在变量和函数方面。
  • python 中没有 main 函数,代码是顺序执行。
  • python 自带许多的基础库,不需要额外引入其他库实现基本功能。
  • python 的代码块并不是使用大括号来实现,而是使用冒号和缩进实现的。
  • python 的输出自带换行,不需要使用转义字符 \n

实现最简单的 python 程序,输出 HelloWorld!

print("HelloWorld!")

恭喜你,已经是一个 pythoner 了

基础语法

1. 缩进

Python不用括号来表示语种块,也不用开始或结束标志符来表示,而是靠缩进,用四个空格表示。要注意的是在代码块开始的上一行的末尾加上一个冒号,如下面实例所示。C语言中的代码块是使用一对花括号来表示。

if 9 > 8:
    print('9 is greater than 8')
    print('lalalala')

2. 注释

单行注释:采用 # 开头
多行注释(docString):采用三个引号"""开头,三个引号结束,单引号和双引号都可以。

# 这里是一个单行注释
'''
多行注释用三个引号就可以
换个行也是没问题的
'''
"""
双引号也是可以的
换个行看看
"""
print("HelloWorld!")

3. 防止中文注释报错

因为有时不同文件的编码格式不同,所以当文件中出现中文的时候程序无法识别就会报错,所以需要在前面指定编码的类型来防止报错。一般有下面两个解决办法,推荐使用第一个,简单粗暴。

  • 在文件开头加一行注释: # coding: utf-8
  • 也可在设置里找到”File Encodings”设置为UTF-8

变量

上面我们已经提到,python 在整个语言中都淡化了数据类型这一概念,更在乎数据的具体使用,所以在 python 中,基础的数据类型有:

  • 整数 int
  • 小数 float
  • 字符串 str

也就是说在C语言里面的很多数据类型都变成了常用的 int 和 float,如果是整数就是 int,如果是小数就是 float,当然 python 已经把这些改变进行弱化,我们不必过度关心变量的数据类型,用就完事了。因为我们在使用变量的时候 python 可以根据所赋的值的类型来设置变量的类型,不需要手动设置。

# 使用 type() 可以查看变量的数据类型
a = 67            # 整数
print(type(a))
# <class 'int'>

a = 79.0          # 小数
print(type(a))
# <class 'float'>

a = 'Hahah'       # 字符串
print(type(a))
# <class 'str'>

需要注意的是:在 python 中,int 型数据理论上是可以表示到无穷大的,也就是没有数据大小的上限,不需要考虑溢出或者越界问题,这也是 python 在数据处理以及科学计算方面比较流行的一个原因。

图片

字符串的数据类型的赋值可以直接使用一个字符串进行赋值,只需要将字符串使用单引号或者双引号括起来就好,两种表示方法是一样的,比如:

a = 'single'
b = "double"
print(a)
# single
print(b)
# double

那么问题来了,在 C语言中存在字符型数据,是使用单引号括起来的。在 python 中应该如何表示一个字符呢?其实,一个字符就是相当于只有一个字符的字符串,所以想要表示字符就可以直接使用表示字符串的方法就可以。python 会把它当做一个字符串进行处理。

a = 'a'
print(type(a))
# <class 'str'>

因为字符串部分的内容比较多,也是逆向题目中经常使用到的一部分内容,关于字符串部分的详细讲解会在后面的不远处进行介绍~ 这里就简单介绍一下~ 稍等~

操作符

python 的操作符跟其他的语言类似,主要分为以下几种:

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符

这里只介绍了一些常用的,如果需要更多的了解的话,点击这里了解更多

算术运算符

Operator Operatorr Example
+ Addition x + y
- Subtraction x - y
* Multiplication x * y
/ Division x / y
% Modulus x % y
** Exponentiation x ** y
// Floor division x // y

** 表示次方,不需要使用 pow() 函数就可以表示次方了,非常好用的一个方法。另外,因为 python 中的除法 / 的结果是会计算小数的,所以这时候就需要一个可以取整的运算符,也就是 // 表示整除,也是很有可能用到的一个工具,除此之外运算符的使用C语言中的使用几乎没有区别。

a = 5.2
b = 9
print(a ** 2)
# 27.040000000000003

print(b ** 0.5)
# 3.0

print(a ** b)
# 2779905.883635713

print(b / a)
# 1.7307692307692306

print(b // a)
# 1.0

比较运算符

等同于 C 语言

Operator Name Example
== Equal x == y
!= Not equal x != y
> Greater than x > y
< Less than x < y
>= Greater than or equal to x >= y
<= Less than or equal to x <= y

逻辑运算符

直接使用相应的英文单词就可以表示逻辑上的与、或、非

Operator Description Example
and Returns True if both statements are true x < 5 and x < 10
or Returns True if one of the statements is true x < 5 or x < 4
not Reverse the result, returns False if the result is true not(x < 5 and x < 10)

位运算符

Name Description exp
& 同时为 1 结果为 1
| 只要有 1 结果为 1
^ 抑或 两者只有一个是 1 结果为 1
~ 取反
<< 左移 左移,右边补 0
>> 右移 有符号右移,左边补最高位

这里的右移是跟有些语言不一样的,python 中在右移的时候,左边空出来的位由最高位的值代替,也就是符号位,所以称之为有符号右移。而有些语言是在前面补 0,称为无符号右移。

逻辑判断

使用 if else 可以进行判断,这是一个共识,但是在 python 中的写法会有所不同。

  1. 代码块使用冒号以及缩进表示
  2. 在进行逻辑判断时,不需要加括号(加了也没错)
  3. 逻辑运算符分别为 and、or、not
  4. else if 使用 elif 代替
a = 8
b = 5

if a > b:
    print('a 比 b 大')
elif b > a:
    print('a 比 b 小')
else:
    print('a, b 相等')

循环

python 中的循环主要就是两种,while 循环和 for 循环。循环中同样可以使用 break 或者 continue 来跳出或者终止循环。

while 循环

while 循环非常简单,只有一个判断条件,在用法上面跟 C 语言是一样的,不同点就是在代码的语法上的不同,下面就通过一个简单的例子来理解一下 python 中的 while 循环(一看就懂系列)

i = 10
while i > 0:
    print(i)
    i -= 1

上面需要注意的地方是:python 中是不存在 i-- 或者 i++ 操作的,要想实现类似的功能,需要使用 i += 1i -= 1

for 循环

for 循环在 python 中使用的主要是 for in 结构;也是最经常使用的结构。

基本用法
for item in sequence:
    pass

item 代表 sequence 中的一个元素,如果 sequence 是一个字符串,item 就是字符,for 循环的作用就是把 sequence 里面的每一个元素依次赋值给 item,并执行后续代码块的操作。下面看一个简单的例子:

stra = "NoPwnNoFun!"

for char in stra:
    print(char, end=',')

# N,o,P,w,n,N,o,F,u,n,!,

【提示】end 是 python 中 print 的一个参数,决定每次输出以什么结尾,默认 end = ‘\n’,后面介绍输出的时候会再次提到。

数字迭代

在 for 循环中,最经常用到的就是数字的迭代,比如从 0 迭代到 n,for i in range(n)。也就是对应着C语言中的 for (int i = 0; i < n; i++),在 python 中可以借用 range 函数进行快速的迭代。由于 range 用的几率很大,所以这里就多介绍一下,一边介绍 range 一边介绍 for 循环。

range 的实质是快速生成按照一定顺序排列的整数,一般有三个用法:分别对应不同的参数个数。

  • 当 range 只有一个参数的时候。
for i in range(3):
    print(i)

# output
# 0
# 1
# 2

可以看到,这个时候,i 的值会从开始增加一直增加到 n - 1. 作用是不是等效与上面的 C语言代码? for (int i = 0; i < n; i++) 同样表示从 0 开始,依次增加 1,但是不等于 n。

  • 当 range 有两个参数的时候。
for i in range(1, 4):
    print(i)

# output
# 1
# 2
# 3

有了两个参数之后,第一个参数代表遍历的起始位置,第二个参数代表遍历的结束位置,但是不包含结束位置。也就是一个左闭右开的区间。(左闭右开的情况在 python 的其他地方也会遇见,记得留意)

  • 当 range 有三个参数的时候。

当然,为了适用于更多的情况,range 还有第三个参数,代表步长,默认值为 1。步长的意思是每次递增的时候递增的值的大小(好拗口)。只见看例子吧,一看就懂!

# 步长不是 1 的情况
for i in range(1, 8, 2):
    print(i, end=' ')

# 1 3 5 7

# 步长为负数的情况,反向走
for i in range(5, 1, -1):
    print(i, end=' ')

# 5 4 3 2 
迭代多个对象

用法

for i, j in zip(seq1, seq2):    # 三个也是可以的
    pass

举例

lista = [0, 1, 2]
listb = [5, 6, 7]

for i, j in zip(lista, listb):
    print(i + j, end=' ')

# 5 7 9
访问元素的同时访问下标

用法

for index, item in enumerate(sequence):
    pass

举例

stra = "Hello"

for index, value in enumerate(stra):
    print(index, value)

# output
# 0 H
# 1 e
# 2 l
# 3 l
# 4 o

输入

输入非常简单,因为只有一个获取输入的方法。那就是 input()

不同于其他语言的获取输入的方式,python 的获取输入的方式非常简单粗暴,按行获取输入,一个 input() 函数读取一行的数据,然后以字符串的形式返回。所以获取输入的方法就是:

a = input()
print(a)

# input
# Hello

# output
# Hello

简单粗暴,一点都不花里胡哨的。input() 的括号里面还可以传入字符串来当作输入提示。

a = input("please input something you like:")
print(a)

运行结果

please input something you like:python is great!
python is great!

input 的用法,也就这些,要想获取更加复杂的输出,后面介绍字符串处理以及数据处理的时候会详细介绍。

猜你喜欢

转载自blog.csdn.net/jaykm/article/details/103898274