学习任何语言,都要学习其语法,句子结构。学习编程语言亦是如此。
所幸,与机器的交流的语言相比人与人之间交流的语言,要简单明了得多。
本章中,主要讲述python的三个基本点。变量,函数,结构。
首先,什么是变量,是相对与常量而言的。
假设我们制作一个计算器。
当你使用计算器根据半径计算周长的时候,c = 2ΠR ,此时R是变量,Π是常量等于3.1415926……。
为什么要有变量?因为你在编程的时候,只需要用R这个符号,就可以替代你输入的任何值,它随你输入变化而变化。
数据类型 | 示例 | |
---|---|---|
Number | int | 32 |
float | 32.0 | |
bool | True False | |
complex | 32 + 4j | |
String | 字符串 | ‘32’ 或者是 “32” |
List | 列表 | [3,2,1] 方括号 |
Tuple | 元组 | (3,2,1) 圆括号 |
Set | 集合 | {3,2,1} 花括号 |
Dictionary | 字典 | {‘first’:1,‘second’:2} 花括号+冒号 |
首先,明确无论是怎样的数据,在计算机内部,都是以0和1的形式存储的。一个0或者一个1,所占用的内存,称之为1bit(比特)。上述不同的类型,所占用的空间也不同。
比如我有一个列表list1 = [4,5,6] ,list[1] 就是5 。
注意,在除了matlab的编程语言之中,大多数索引都是以0开始的。 所以1索引到list1的第二个值。list1[方括号内必须为整数],否则会报错。 这很好理解,因为list1中只有第1,2,3个数,不存在第1.5个数.
在python之中,你甚至可以使用负整数索引,猜猜list1[-1]的值是多少?
没错,倒数第一个,它的值是6。
bool类型只有两个值,True 和 False。这里就要讲到逻辑语句。
还是假设我们在做一个计算器,要实现一个功能,假如一个数大于10,就让他乘以2,否则,就让他加上3
if num > 10:
num = num * 2
else:
num = num + 3
这里的num > 10 的值,就是一个bool类型。当num = 11,那么它为真,执行后变成22,当num = 9,执行else里面的语句,变成12.
顺便一提,在python中,=表示赋值,==表示判断两边值是否相等。
字符串是一个最为直观的数据类型,比如’hello, world’。可以看看另一篇博文讲述python3字符串
列表无疑是最为实用的一个数据类型,再也不用思考C++那种,需要预分配多少内存,放的是什么样的数据类型, 才足够放下一个可变长的输入数据了。只需要一个append,你就能放下无限长的数据!(雾)
例如下面这一段
[
1,
'你好呀',
True,
{'心愿':'一夜暴富'},
……
]
元组和字典,放在函数里面讲吧,现在只要知道它的形式是怎么样的就行。
元组a=(1,’2‘,{},[]),和列表差不多,区别是不能修改值。例如,可以使用
list1[0] = ‘先定个小目标’,但你不能使用a[0] = ‘赚他一个亿’。这是做不到的。
字典,顾名思义,就是你可以根据一个值来查找对应的说明。也称之为“键值对”。冒号左边是键key,右边是值value。例如下面这个例子。
person = {
'name':'老王',
'age':'33',
'height':180,
'weight':'76kg',
'position':None,
}
可以看到,这种数据类型非常清晰,你可以使用person[‘name’],就得到“老王”,person[‘age’]就得到33。
至于集合,数学意义上的集合,交并差,元素唯一等性质。用得时候再看吧。
def 函数名(参数)
……
return 返回值
主要就是,函数名称,参数,以及返回值。调用方式就是,函数名()
和变量名一样,随便取,只要不和现有的冲突了,都行。
可以在调用的时候,返回一个值。例如
def A()
return 32
a = A()
实际上a = 32.
返回值的使用,注意两点:
def A():
return 1, 2, 3, 4
s = A()
a, b, c, d = A()
这种情形下,s 的数据类型是tuple,用print打印,可以得到(1,2,3,4)
而下面,a,b,c,d就是分别赋值,你可以得到a=1,b=2,c=3,d=4.整数类型
当你左边的变量个数不是1或者4,就会报错哦!因为你1个变量,情有可原,我把这个返回的元组赋值给你,你4个变量,也可以接受,元组解包,对号入座没有问题。
a, b = A()
但你只有两个变量在左边,是要干啥呢,1给a,还是1,2给a,还是1,2,3?
暧昧不清的命令,无法正确执行。
函数中较为复杂的一点,就是这个传入参数了,因为形式灵活。
def A(a,b)
print(a+b)
这种情况,你必须传递两个参数到A中。A(3,10)
def A(a,b=10)
print(a+b)
这种情况,你可以传递1-2个参数到A中。A(3,10) 或 A(3)都可以得到13的结果。
def A(*args):
print(args)
A(1,2,3,4,5,6,7,8,9)
这种情况,你可以传递任意个参数,你可以写A(3,10)或者A(1,2,3,4,5,6,7,8,9)。
因为它会把你传入的所有参数存储在元组之中,你实际上做的就是args = (3,10)
def A(**kwargs):
print(kwargs)
A(name='隔壁老王', age=18, money=99999999)
这种情况,你可以传递任意个参数,但是格式要符合字典格式,key=value.
提的有点晚了点,不过顺口一说就行。在python语言之前,一个代码块是这样的:用花括号,或者是其他的方式,begin,end之类的包裹起来。
int A(){
pass
return 0
}
```A
```python
def A():
pass
python里,简化了这种形式,使用强制的缩进,来保证代码块以及简洁性。
a = 10
def A()
b = 3
print(b)
b = 5
print(b)
在def函数的时候,缩进了四格,代表这一块代码是输入def函数的,而到了b=5的时候,又回来到顶格,就表示函数的定义结束了。其他类似的代码块也是如此。
if 你喜欢我:
你点个关注+赞
else:
你关掉了网页
if 后面是一个逻辑语句,判断是True或是False,若真,执行if框内的语句,否则就执行else框内的语句。
结构如此,注意末尾有冒号。
while True:
print('I Love You')
上面这条语句,就是不停地说“I Love You”,也称死循环,没有结束条件。
c
while c < 100:
c += 1
print('I Love You')
while后面加上判断条件,这次说一百遍就不说了!且行且珍惜。
for c in range(100):
print('I Love You ')
range(100)的作用是得到[0,1,2,3,4,……,98,99]
for c in range(100)就是遍历一下上面的列表,c=0,执行一下下面的print,然后c=1,执行下面的print。也是只说一百次。
是for循环比较常用的一个句式结构。