跳转至

编程语言基础

0. 概述

编程语言本质上都是相通的,这篇文章就是写各种语言中相同逻辑的实现。

大致有如下内容:

  • 语言基础:注释,运算符,条件控制,循环
  • 数据类型:数字,字符串,列表,元组,字典,集合
  • 高级功能:函数,结构体,类,错误和异常,包,引用
  • 标准库:输入,输出,文件,其他

1. 语言基础

1.1. 注释

# 这里是单行注释

'''
多行注释是使用字符串的形式定义的
可以使用3个单引号或者3个双引号
'''

"""
还可以使用3个双引号做多行注释
"""
// 这里是单行注释

/*
 * 这里是多行注释,本行前面的*可以不用写,为了对齐美观可以写上。
*/
// 这里是单行注释

/*
 * 这里是多行注释,本行前面的*可以不用写,为了对齐美观可以写上。
*/
// 这里是单行注释

/*
 * 这里是多行注释,本行前面的*可以不用写,为了对齐美观可以写上。
 */
// 这里是单行注释

/*
 * 这里是多行注释,本行前面的*可以不用写,为了对齐美观可以写上。
 */

1.2. 运算符

a=10, b=21

基本运算符

运算符 说明 示例
+ a+b 为 31
- a-b 为 -11
* a*b 为 210
/ b/a 为 2.1
% 取模:返回余数 b%a 为 1
** 幂: a**b 为 10 的 21 次方
// 取整:向下取整 9//2 为 4
-9//2 为 5
++ 自增:相当于 x=x+1
-- 自减:相当于 x=x-1

逻辑运算符

| 运算符 | 说明 | 示例 | | --------------------- | -------- | --------------- | ------ | --- | | == | 等于 | (a==b) 为 Flase | | != | 不等于 | (a!=b) 为 True | | > | 大于 | (a>b) 为 Flase | | < | 小于 | (a>= | 大于等于 | (a>=b) 为 Flase | | <= | 小于等于 | (a<=b) 为 True | | &&and | 逻辑与 | | | | |or | 逻辑或 | | | !not 【一元】 | 逻辑非 | |

赋值

运算符 说明 示例
= 赋值 (a==b) 为 Flase
+= 加后赋值 (a!=b) 为 True
-= 减后赋值 (a>b) 为 Flase
*= 乘后赋值 (a<b) 为 True
/= 除后赋值 (a>=b) 为 Flase
%= 取模后赋值 (a<=b) 为 True
**= 幂次后赋值
//= 取整后赋值
:= 声明并赋值

位运算符

a=60, b=13
a = 0011 1100
b = 0000 1101
----------------
a&b = 0000 1100 [12]
a|b = 0011 1101 [61]
a^b = 0011 0001 [49]
~a  = 1100 0011 [-61] 首位为符号位
a<<2= 1111 0000 [240]
a>>2= 0000 1111 [15]

| 运算符 | 说明 | 示例 | | ---------- | ---- | ------------------- | ------------------- | | & | 与 | (a&b) 为 0000 1100 | | | | 或 | (a|b) 为 0011 1101 | | ^ | 异或 | (a^b) 为 0011 0001 | | ~ [一元] | 取反 | (~a) 为 1100 0011 | | << | 左移 | (a<<2) 为 1111 0000 | | >> | 右移 | (a>>2) 为 0000 1111 |

其他运算符

运算符 说明 示例
& 地址运算符 &a 返回 a 的实际地址
* 指针 *a 返回 a 的指针
in 在序列中 x in y,在 True,不在 False
not in 不在序列中 x in not y,在 False,不在 True
is 判断对象相同 x is y,相同 True,不同 False
is not 判断对象不同 x is not y,相同 False,不同 True

运算符优先级

| 运算符 | 说明 | | -------------------------- | ---------------------------- | -------- | | ** | 幂 | | ~ + - | 取反,正号,负号。一元运算符 | | * / % // | 乘,除,求余数和取整除。 | | + - | 加,减 | | >> << | 右移,左移 | | & | 位与 | | ^ | | 异或,或 | | <= < > >= | 比较运算符 | | == != | 等于,不等于 | | = += -= *= /= %= //= **= | 赋值运算符 | | is is not | | | in not in | | | not and or | 逻辑判断 |

不支持 ++-- 自增和自减。

不支持 &&||! 逻辑与,逻辑或,逻辑非 的写法 。

不支持 $* 地址运算符和指针。

| 分类 | 运算符 | 说明 | | ---------- | -------------------------------- | -------------------------------------- | -------- | ------ | | 单目运算符 | ! * & ++ -- + - | 非,指针,地址,自增,自减,正号,负号 | | 乘除余 | * / % | 乘,除,求余 | | 加减 | + - | 加,减 | | 位移运算符 | >> << | 右移,左移 | | 关系运算符 | <= < > >= | 小于等于,小于,大于,大于等于 | | 相等/不等 | == != | 等于,不等于 | | 按位与 | & | 与 | | 按位异或 | ^ | 异或 | | 按位或 | | | 或 | | 逻辑与 | && | 逻辑与 | | 逻辑或 | | | | 逻辑或 | | 赋值运算符 | = += -= \*= /= %= >>= <<= &= ^= | = | 从右到左 |

不支持 **// 幂和取整。

不支持andornot 逻辑与,逻辑或,逻辑非 的写法 。

不支持 ~ 取反。

// 这里是单行注释

/*
 * 这里是多行注释,本行前面的*可以不用写,为了对齐美观可以写上。
*/
// 这里是单行注释

/*
 * 这里是多行注释,本行前面的*可以不用写,为了对齐美观可以写上。
 */
// 这里是单行注释

/*
 * 这里是多行注释,本行前面的*可以不用写,为了对齐美观可以写上。
 */

2. 数据类型

2.3. 列表

访问列表中的元素索引都是从0开始的。有的语言支持倒序,最后一个元素的索引为-1

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']

# 访问一个值
list[0] # red
list[1] # green
list[-1] # black 有的语言支持
list[-2] # white 有的语言支持

# 访问一组值
list[startIndex:endIndex] # 相当于取 [startIndex, endIndex) 包含startIndex,不包含endIndex
list[:endIndex] # 等同于 [0:endIndex]
list[startIndex:] # 等同于 [startIndex:len(list)]

# 步长,step默认值为1
list[start:stop:step] # 取 start, start+step, start+2*step ... 一直到stop为止。不包含stop。
list[::-1] # 相当于将list列表反向排列。['black', 'white', 'yellow', 'blue', 'green', 'red']

创建日期: 2017-10-30 09:00:00
最后更新: 2022-07-30 02:00:00