零基础入门学Python系列内容的学习目录 → \rightarrow →零基础入门学Python系列内容汇总。
需要学习的基础知识有:变量、字符串、条件分支、while循环、数据类型、常用操作符等。
1. 变量
当我们把一个值赋给一个名字时,它会存储在内存中,把这块内存称为变量(Variable)。在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”,但在Python中更像是把名字“贴”在值的上边,所以有的Python程序员会说“Python没有变量,只有名字“。
examples1:
>>> name = “小明”
>>> print(name)
小明
examples2:
>>> name = “小明”
>>> word = “你好”
>>> sentence = name + “,” + word + “!”
>>> print(sentence)
你好,小明!
examples2中这种字符串加字符串的语法,在Python里称为字符串的拼接。
需要注意的地方:
- 在使用变量前,需要对其先赋值;
- 变量名可以包括字母、数字、下划线,但变量名不能以数字开头;
- 字母可以是大写或小写,但大小写是不同的;
- 等号(=)是赋值的意思,左边是名字,右边是值;
- 变量的命名理论上可以去任何合法的名字,但是尽量给变量取一个专业一点的名字。
2. 字符串
到目前为止,我们所认知的字符串就是引号内的一切东西,我们也把字符串叫做文本,文本和数字是截然不同的。如果直接让两个数字相加,那么Python会直接将数字相加后返回结果;但如果在数字的两边加上了引号,就变成了字符串的拼接,这正是引号带来的差异。
examples1:
>>> 5 + 8
13
examples2:
>>> ‘5’+‘8’
‘58’
创建字符串时要在字符两边加上引号,可以是单引号或双引号。不论是加单引号还是双引号,都必须成对使用,否则不成对使用会像example3一样报错。
examples3:
>>> 'Python I Love you!"
SyntaxError: EOL while scanning string literal
如果字符串内容中需要出现单引号或者双引号,怎么办?
examples4:
>>> ‘Let’s go!’
SyntaxError: invalid syntax
直接像example4中这样写会出现错误。有两种方法可以解决:
- 第一种:使用转义符号( \ )对字符串中的引号进行转义;
examples5:
>>> ‘Let’s go!’
“Let’s go!” - 第二种:单引号或者双引号互用。
examples6:
>>> “Let’s go!”
“Let’s go!”
2.1 原始字符串
反斜杠( \ ):example1:
>>>string = ‘C:\now’
>>>string
‘C:\now’
>>>print(string)
C:
C:ow
使用反斜杠打印的结果并不是C:\now,原因是反斜杠和后面的字符恰好转义之后构成了换行符( \n)。
用反斜杠( \ )对自身进行转义:example2:
>>>string = ‘C:\\now’
>>>string
‘C:\\now’
>>>print(string)
C:\now
但如果对于一个字符串中有很多个反斜杠可能会使得代码变得混乱,所以我们可以使用原始字符串。
原始字符串只需要在字符串前面加一个英文字母 r 即可:example3:
>>>string = r‘C:\now’
>>>string
‘C:\\now’
>>>print(string)
C:\now
在使用字符串的时候需要注意一点,无论是否是否原始字符串,都不能以反斜杠作为结尾。反斜杠放在字符串的末尾表示该字符串还没有结束,换行继续的意思。
2.2 长字符串
如果希望得到一个跨越多行的字符串,我们需要使用三重引号字符串(" " " 内容 " " " )。
examples1:
>>> str = " " " 小时候,
幸福是件简单的事;
长大后,
简单是件幸福的事。" " "
>>> print(str)
小时候,
幸福是件简单的事;
长大后,
简单是件幸福的事。
3. 改进我们的小游戏
接下来我们对之前设计的猜数游戏做了以下几方面的改进:
(1)当用户猜错的时候,程序应该给点提示,比如告诉用户当然输入的值比答案是大了还是小了;
(2)每运行一次程序只能猜一次,应该提供多次机会给用户猜测,至少要三次;
(3)每次运行程序,答案应该是随机的,不然容易导致答案外泄,其他用户就会提前知道正确答案。
下面让我们一起通过学习新的知识来完成这些改进吧!
3.1 条件分支
Python中的比较操作符:< (小于),<=,> (大于),>=,== (等于),!= (不等于)。
Python中的条件分支语法:if 条件:
条件为真(True)执行的操作
else:
条件为假(False)执行的操作
对于第一个改进要求:当用户猜错的时候,程序提示用户当前的输入比答案大了还是小了。程序改进后(假如答案为8):
如果用户输入3,程序应该提示比答案小了;
如果用户输入9,程序应该提示比答案大了。
接下来我们编写实现第一个改进要求的代码。
print('----------------我爱猜数字----------------')temp = input("不妨猜一下我现在心里想的是哪个数字:")guess = int(temp)if guess == 8: print("你是我肚子里的蛔虫吗?") print("哼,猜中了也没有奖励!")else: if guess > 8: print("猜大了哦") else: print("猜小了哦")print("游戏结束,不玩啦^-^")
3.2 while循环
Python中的while循环语法:while 条件:
条件为真(True)执行的操作
对于第二个改进要求:程序员应该给用户提供多次猜测机会,至少要三次。
接下来我们编写实现第二个改进要求的代码。
print('----------------我爱猜数字----------------')temp = input("不妨猜一下我现在心里想的是哪个数字:")guess = int(temp)if guess == 8: print("你是我肚子里的蛔虫吗?") print("哼,猜中了也没有奖励!")while guess != 8: temp = input("哎呀,猜错啦,请重新输入一个数字:") guess = int(temp) if guess == 8: print("小笨蛋,终于猜对了呢") else: if guess > 8: print("猜大了哦") else: print("猜小了哦")print("游戏结束,不玩啦^_^")
不过这个代码只有在用户输入正确的数字时才能结束循环,这跟我们的第二个改进要求有点不同,我们可以使用and逻辑操作符来对代码进行修改。
Python的逻辑操作符可以将任意表达式连接在一起,并得到一个布尔类型的值。布尔类型只有两个值:True和False。
examples1:
>>> (3>2) and (1<2)
True
>>> (3>2) and (1>2)
False
对刚编写的实现第二个改进要求的代码进行修改,把猜测机会设为3次。
print('----------------我爱猜数字----------------')times = 2temp = input("不妨猜一下我现在心里想的是哪个数字:")guess = int(temp)if guess == 8: print("你是我肚子里的蛔虫吗?") print("哼,猜中了也没有奖励!")if guess>8: print("猜大了哦")else: print("猜小了哦")while(guess != 8)and(times>0): temp = input("哎呀,猜错啦,请重新输入一个数字:") guess = int(temp) times = times - 1 if guess == 8: print("小笨蛋,终于猜对了呢") else: if guess>8: print("猜大了哦") else: print("猜小了哦") if times == 0: print("机会用光了 T_T")print("游戏结束,不玩啦 ^_^")
3.3 引入外援
random module里边有一个函数叫做randint(),它会返回一个随机的整数。
对于第三个改进要求:每次运行程序,答案都是随机的。
接下来我们编写实现第三个改进要求的代码。
import random #导入random模块times = 3 #用户总共有3次机会secret = random.randint(1,10) #使其生成1-10之间的随机数print('----------------我爱猜数字----------------')guess = 0 # 这里先给 guess 赋值(赋一个绝对不等于 secret 的值)print(" 不妨猜一下我现在心里想的是哪个数字: ", end=" ") # print()默认是打印完字符串会自动添加一个换行符, end=" " 参数告诉 print() 用空格代替换行while (guess != secret) and (times > 0): temp = input() guess = int(temp) times = times - 1 # 用户每输入一次,可用机会就 -1 if guess == secret: print(" 你是我肚子里的蛔虫吗? ") print(" 哼,猜中了也没有奖励! ") else: if guess > secret: print(" 猜大了哦") else: print(" 猜小了哦") if times > 0: print(" 再试一次吧: ", end=" ") else: print(" 机会用光咯 T_T") print(" 游戏结束,不玩啦 ^_^")
4. 数据类型
Python的数值类型包含整型、浮点型、布尔类型、复数类型。
4.1 整型
整型(int):整型数字包括正整数、0和负整数,不带小数点,无大小限制。
Python3的整型已经与长整型进行了无缝结合,现在的Python3的整型类似于Java的BigInteger类型,它的长度不受限制,如果说非要有个限制,那只限于计算机的虚拟内存总数,所以用Python3很容易进行大数计算。
4.2 浮点型
浮点型(float):浮点型数字使用C语言中的double类型实现,可以用来表示实数,如3.14159、-10.5、3.25e3等。
E记法:就是平时所说的科学计数法,用于表示特别大和特别小的数。E的意思是指数,指底数为10,E后边的数字就是10的多少次幂。
examples1:
>>> a = 0.0000000000000000000025
>>> a
2.5e-21
4.3 布尔类型
布尔类型(boolean):用于表示逻辑值True(逻辑真)和False(逻辑假)。它是整型的子类型,在作为数字参与运算时,False自动转为0,False自动转为1。
examples1:
>>> True + False
1
>>> True + True
2
当然把布尔类型当成1和0来参与运算这种做法是不妥的。
4.4 类型转换
几个跟数据类型紧密相关的函数:int()、float()和str()。
int() 的作用是将一个字符串或浮点数转换为一个整数。
examples1:
>>> a = ‘520’
>>> b = int(a)
>>> a, b
(‘520’, 520)
>>> c = 5.99
>>> d = int(c )
>>> c, d
(5.99, 5)
如果是把浮点数转换为整数,那么Python会采取“截断”处理,就是把小数点后的数据直接砍掉,不是四舍五入。
float() 的作用是将一个字符串或整数转换成一个浮点数。
examples2:
>>> a = ‘520’
>>> b = float(a)
>>> a, b
(‘520’, 520.0)
>>> c = 520
>>> d = float(c )
>>> c, d
(520, 520.0)
str() 的作用是将一个数或任何其他类型转换成一个字符串。
examples3:
>>> a = 5.99
>>> b = str(a)
>>> b
‘5.99’
>>> c = str(5e15)
>>> c
‘5000000000000000.0’
4.5 获得关于类型的信息
Pyhton提供了type() 函数,可以明确告诉我们变量的类型。
examples1:
>>> type( ‘520’)
除了type()函数,查看Pyhton的帮助文档,它更建议我们使用isinstance() 这个BIF来确定变量的类型。这个BIF有两个参数,一个是待确定类型的数据;另一个是指定一个数据类型。isinstance()会根据两个参数返回一个布尔类型的值。True表示类型一致,False表示类型不一致。
examples2:
>>> isinstance(‘520’, str)
True
>>> isinstance(520, float)
False
>>> isinstance(520, int)
True
5. 常用操作符
Python中常用操作符有算术操作符、比较操作符、逻辑操作符及优先级问题。
5.1 算术操作符
算术操作符包括 + (加)、- (减)、* (乘)、/ (除)、% (取余)、** (幂运算)、// (地板除法)。
examples1:
>>> a = b = c = d = e = f = g =10
>>> a += 1
>>> b -= 3
>>> c *= 10
>>> d /= 5
>>> e %= 2
>>> f **= 3
>>> g //= 5
>>> print(a, b, c, d, e, f, g)
11 7 1000 2.0 0 100 2
对于整数除法,一般都采用floor的方式,也称为地板除法。地板除法的概念是:计算结果取比商小的最大整型,也就是舍弃小数的意思。
但是我们发现,即使是进行整数间的除法,答案也是自动返回一个浮点型的精确数值,也就是说Python用真正的除法代替了地板除法。不过可以使用 // 来实现地板除法,也就是整数除整数会得到一个整数。需要注意的是,无论是整数运算还是浮点数运算,都会执行地板除法。
examples2:
>>> 3 // 2
1
>>> 3.0 // 2
1.0
5.2 优先级问题
优先级问题一般原则:先乘除,后加减,有括号先运行括号里面的。
examples1:
>>> - 3 * 2 + 5 / - 2 - 4
-12.5
在example1中 - 3 * 2 + 5 / - 2 - 4 相当于 (- 3) * 2 + 5 / (- 2) - 4 = - 6 + (-2.5) - 4 = -12.5。
Python中还有一个特殊的乘法——双星号(**),也成为幂运算操作符。在使用Python进行幂运算的时候,需要注意的一点是优先级问题,因为幂运算操作符和一元操作符的优先关系比较特别:幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低。
examples2:
>>> -3 ** 2
-9
>>> 3 ** -2
0.1111111111111111
5.3 比较操作符
比较操作符包括 < 、
5.4 逻辑操作符
逻辑操作符包括 and 、or 、not。
当只有and操作符左边的操作数为真,且右边的操作数同时为真时,结果才为真。
or操作符跟and操作符不同,or操作符只需要左边或者右边任意一边为真,结果都为真;只有两边同时为假,结果才为假。
not操作符是一个一元操作符,它的作用是得到一个和操作数相反的布尔类型的值。
examples1:
>>> not True
False
>>> not 0
True
>>> not 4 # 在Pyhton中非零整数均解释为True
False
Python中and含0,返回0;均为非零,返回最后一个值;or至少有一个非零,返回第一个非零值。
examples2:
>>> 3 and 4
4
>>> 3 or 4
3
目前我们接触的所有操作符的优先级如图2所示。