零基础入门学Python(三)—— 成为高手前必须知道的一些基础知识

零基础入门学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’

零基础入门学Python(三)—— 成为高手前必须知道的一些基础知识

图1 类型转换图示


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所示。

零基础入门学Python(三)—— 成为高手前必须知道的一些基础知识

图2 Python操作符优先级


上一篇:【python】[基础]3 - 程序控制


下一篇:Python番外篇:猜数字游戏