内容整理来自《零基础入门学习Python》–小甲鱼 编著
一、变量
当你把一个值赋值给一个名字时,它会存储在内存里,把这块内存称为变量(variable)。
变量就像是把名字“贴”在值的上面时,所以有些程序员会说Python没有变量,只有名字。变量就是一个名字,通过这个名字,可以找到想要找的东西。
看个例子:
>>> teacher = "jacky"
>>> print(teacher)
jacky
>>> teacher = "哈哈"
>>> print(teacher)
哈哈
使用变量需要注意:
- 变量定义的规则:变量名只能是 字母、数字或下划线的任意组合,变量名的第一个字符不能是数字,以下关键字不能声明为变量名。 [‘and’,
‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’,
‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’,
‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’,
‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’] 变量的定义要具有可描述性。 - 变量的命名要见名知意,例如 user_name 、age_of_jacky.
- 使用变量前,需要对其先赋值。
二、字符串
我们也把字符串叫为文本,文本和数字是截然不同的。
在python让两个字符相加,python会直接告诉你结果:
>>> 7 + 8
15
如果在数字的两边加上了引号,就变成了字符串的拼接,这就是引号带来的区别:
>>> '7' + '8'
'78'
python里的单引号和双引号没有任何区别,python表示在这一点上不挑剔。但必须成对,你不同一边用单引号,另一边却花心地用上双引号结尾,这样python就不知道你想干嘛了。
>>> 'I am studying python!"
SyntaxError: EOL while scanning string literal
那如果字符串中需要出现单引号或双引号怎么办?
>>> 'Let's go'
SyntaxError: invalid syntax
像上面这样写,python会误会你的意思,从而产生错误。
有两种方法。第一种比较常用,就是使用转义字符(\)对字符串中的引号进行转义:
>>> "Let\'s go"
"Let's go"
还有一种就是利用Python可以用单引号和双引号表示字符串这一特点,用不同的引号表示字符串,这样Python就不会误解你的意思啦。
>>> "Let's go"
"Let's go"
三、原始字符串
如果说字符串中需要出现(\),那可以使用两个(\)转义成一个,例如:
>>> string = 'C:\now'
>>> string
'C:\now'
>>> print(string)
C:
ow
>>> string = 'C:\\now'
>>> string
'C:\\now'
>>> print(string)
C:\now
但是如果对于一个字符串有很多一个反斜杠,我们就不乐意了。毕竟,这不仅是一个苦差事,还可能使代码变得混乱。
不过大家也不用怕,因为Python中有一个快捷的方法,就是使用原始字符串。原始字符串的使用非常简单,只需要在字符串面前加上一个英文字母r即可:
>>> string = r'C:\now'
>>> string
'C:\\now'
>>> print(string)
C:\now
在使用字符串时需要注意的一点是:无论是否原始字符串,都不能以反斜杠作为结尾。(注:反斜杠放在字符串的结尾表示该字符还没有结束,换行继续的意思),如果你坚持这么做就会报错:
>>> string = 'jacky love\'
SyntaxError: EOL while scanning string literal
>>> string = r'jacky love\'
SyntaxError: EOL while scanning string literal
如果非要在字符串加上反斜杠,可以试试字符串拼接的方法:
>>> string = 'jacky love' + '\\' #貌似可以省略加号
>>> string
'jacky love\\'
>>> print(string)
jacky love\
四、长字符串
如果希望得到一个跨越多行的字符串,例如:
从明天起,做一个幸福的人
每天早睡早起,努力工作
好好陪家人朋友
从明天起…
如果行数非常多,使用’\n’作为换行符会非常繁琐。好在Python总是设身处地地为我们着想—只需要使用三重引号字符串就可以轻松解决问题:
>>> print('''
从明天起,做一个幸福的人
每天早睡早起,努力工作
好好陪家人朋友
从明天起......
''')
从明天起,做一个幸福的人
每天早睡早起,努力工作
好好陪家人朋友
从明天起......
五、Python数据类型
-
整型:
整型说白了就是平时所见的整数,Python3的整型以及与长整型进行了无缝结合,它的长度不受限制,如果非要说个限制,那就只限于计算机虚拟内存的总数。 -
浮点型: 浮点型就是小数。
-
布尔类型:
用True和False表示“真”和“假”,但布尔型可以当做整数来对待,True相当于整数1,False相当于整数0,因此下面的运算是可以的:
但是在实际应用中用布尔类型当成0和1来运算是实为不妥的,有0和1为啥不直接用呢?还要整那么麻烦,还容易代码混乱出错… -
>>> True + True 2 >>> True * False 0 >>> True / False #0不能作为除数 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> True / False ZeroDivisionError: division by zero ```
-
类型转换
-
int( ) 将一个字符串或者浮点数转换成整数:
>>> a = '9527' >>> b = int(a) >>> a,b ('9527', 9527) >>> c = 5.59 >>> d = int(c) >>> c, d (5.59, 5) ```
-
float( ) 的作用是将一个字符串或者整数转换成一个浮点数(小数):
>>> a = '9527' >>> b = float(a) >>> a, b ('9527', 9527.0) >>> c = 9527 >>> d = float(c) >>> c, d (9527, 9527.0) ```
-
str( )可以将一个数或者任何其他类型装换成一个字符串:
>>> a = 5.59 >>> b = str(a) >>> b '5.59' >>> c = str(5e15) >>> c '5000000000000000.0' ```
-
使用type( )可以获得变量的类型信息:
>>> type( '') <class 'str'> >>> type('9527') <class 'str'> >>> type(9.527) <class 'float'> >>> type(5e20) <class 'float'> >>> type(9527) <class 'int'> >>> type(True) <class 'bool'> ```
-
isinstance( )这个BIF(Built-in Function内置函数)也可以用来确定数据类型。isinstance(
)有两个参数:第一个是待确定类型的数据;第二个就是一定一个数据类型。 isinstance(
)会根据两个参数返回一个布尔类型的值,True表示类型一致,False表示类型不一致:>>> a = '小苦瓜' >>> isinstance(a, str) True >>> isinstance(9527, float) False >>> isinstance(9527, int) True ```
六、常用操作符
-
算术操作符: + - * / % ** // %取余 ** 取幂 // 地板擦除(取整)
在Python中可以做一些简化:>>> a = b = c = d = 10 >>> a += 1 >>> b -= 1 >>> c *=10 >>> d /= 8 >>> print(a, b, c, d) 11 9 100 1.25 ```
-
需要注意的是使用//的时候,不管是整数运算还是浮点数运算,都会执行地板除法:
>>> 3 // 2 1 >>> 3.0 // 2 1.0 ```
-
优先级问题
-
先乘除再加减,有括号先算括号。Python中幂运算(**)操作符和一元操作符的优先级比较特别:幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低:
>>> -3 ** 2 -9 >>> 3 ** -2 0.1111111111111111 ```
-
但是还是得提醒大家,也许大家对优先级问题已非常熟悉,但是上面代码上的做法还是不推荐使用的,也许哪一天你就把你自己给坑了,我们不妨加上小括号,使得代码逻辑更加的清晰,也可以防止一些不必要的麻烦:
>>> - (3 ** 2) -9 >>> 3 ** (-2) 0.1111111111111111 ```
-
比较操作符 < <= > >= == != 比较操作符根据表达式的值的真假返回布尔类型的值。
-
逻辑运算符 and or not 和成员运算符 in ;not in
-
对了,你可能见到这样的表达式: 3 < 4 < 5 这在其他的编程语言中一般是不合法,但是在Python中却是行得通的,他事实上被解释为:
3 < 4 and 4 < 5
作业:
1.编写程序,要求用户输入姓名并打印“你好,姓名!”
name = input("Please input your name:")
print("hello,", name + "!")
2.编写程序,要求输入1到100之间数字并判断,输入符合要求打印:“你好棒棒啊,要不要把你举高高”,不符合要求则打印:“你说你是不是傻猫”
temp = input("please input a number (1~100):") # input 返回的是一个字符串
if temp.isdigit():
num = int(temp)
if 1 < num < 100:
print("你好棒棒啊,要不要把你举高高。")
else:
print("你说你是不是傻猫。")
else:
print("你说你是不是傻猫。")
3.如果非要再原始字符串结尾输入反斜杠,可以如何灵活处理?
>>> str = r'C:\Program File\Python作业都在这里' '\\'
>>> str
'C:\\Program File\\Python作业都在这里\\'
>>> print(str)
C:\Program File\Python作业都在这里\
4.请写出10 < cost < 50的等价表达式
(10 < cost) and (cost < 50)
5.python 如何实现一行写多条代码和一条代码写成多行?
>>> 3 > 4 and \
1 < 2
False
>>> print("I am jacky!");print("I am studying python!")
I am jacky!
I am studying python!
6.取得一个变量的类型,可以使用type( )或者isinstance(),你要倾向于使用哪一个?
建议使用isinstance,因为它的返回结果比较直接,是布尔类型,另外type( )其实并没有你想象的那么简单,后面再续。