鱼C论坛

 找回密码
 立即注册
查看: 3217|回复: 8

[技术交流] 《零基础入门学习Python》第三讲笔记

[复制链接]
发表于 2017-6-15 17:12:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 joey234you 于 2017-6-15 17:12 编辑

003小插曲之变量和字符串

插曲之变量


        * 变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”。
        * 不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在值的上边。
        * 所以有些Python程序员会说“Python”没有“变量”,只有“名字”。

        示例
       
  1. >>> teacher = '小甲鱼'
  2. >>> print(teacher)
  3. 小甲鱼
  4. >>> teacher = '老甲鱼'
  5. >>> print(teacher)
  6. 老甲鱼
  7. >>> first = 3
  8. >>> second = 8
  9. >>> third = first + second
  10. >>> print(third)
  11. 11
  12. >>> myteacher = '小甲鱼'
  13. >>> yourteacher = '黑夜'
  14. >>> ourteacher = myteacher + yourteacher
  15. >>> print(ourteacher)
  16. 小甲鱼黑夜
复制代码


结论:1、通过等号(=)将字符串'小甲鱼'赋值给变量名teacher,而且也可以用来修改变量名的值,如重新赋值为'老甲鱼'给变量名teacher,结果打印就会发生改变,这直接反映出变量的内容是可变的
                  2、通过给变量first和second赋具体数值,然后两者相加的结果赋值变量third,结果打印third,就是first与second所指向的数值作加法的结果。
                  3、字符串加字符串的语法,在Python里称为字符串的拼接,不同于first与second的数值运算,只是内容上粘合/衔接,如
               
  1. >>> 5+8
  2. 13
  3. >>> '5'+'8'
  4. '58'
复制代码



需要注意的地方

        * 在使用变量之前,需要对其先赋值。如,一个未赋值的变量fishc直接使用会报错,当赋值之后才可以正常使用。
       
  1. >>> fishc
  2. Traceback (most recent call last):
  3.   File "<pyshell#14>", line 1, in <module>
  4.     fishc
  5. NameError: name 'fishc' is not defined
  6. >>> fishc = 8
  7. >>> print(fishc)
  8. 8
复制代码


        * 变量名可以包括字母、数字、下划线,但变量名不能以数字开头。
        * 字母可以是大写或小写,但大小写是不同的。也就是说,fishc和FishC对于Python来说是完全不同的两个名字。
        以上两条主要是因为Python受C语言风格的影响,Python本身是由C语言编写出来的。
        * 等号(=)是赋值的意思,左边是名字,右边是值,不可写反咯。
        * 变量的命名理论可以取任何合法的名字,但作为一个优秀的程序员,请将尽量给变量取一个专业一点儿的名字:
       
  1. >>> t='小甲鱼'
  2. >>> xxoo = '小甲鱼'
  3. >>> teacher = '小甲鱼'
复制代码

相比之下,teacher要比前面两者的语义明确,这对代码的阅读和维护相当有帮助。

插曲之字符串

        * 到目前为止,我们所认知的字符串就是引号内的一切东西,我们也把字符串叫做文本,文本和数字是截然不同的,如之前提到的例子:
       
  1. >>> 5+8
  2. 13
  3. >>> '5'+'8'
  4. '58'
复制代码


        * 要告诉Python你在创建一个字符串,就要在字符两边加上引号,可以是单引号或者双引号,Python女士表示不挑剔。但必须成对,你不能一边单引号,另一边却花心的用上双引号结尾。

        * 如果字符串中需要出现单引号或双引号怎么办?

            --例如我想打印字符串:Let's go!
       
  1. >>> 'Let's go!'                 #若是如此输入就会报语法错误
  2. SyntaxError: invalid syntax
  3. >>>
复制代码


        *有两种方法,第一种比较常用,就是使用我们的转义符号(\)对字符串中的引号进行转义:
       
  1. >>> 'Let\'s go!'
  2. "Let's go!"
复制代码


        *还有一种方法,不使用转义符号,文本(Let's go)两边直接用双引号   
       
  1. >>> "Let's go!"
  2. "Let's go!"
复制代码

        更复杂的情况,若是文本内容既有单引号,也有双引号,就可以使用三重引号(下面会提及)
       
  1. >>> '''she gave me a hug and said, "Let's go home!"'''
  2. 'she gave me a hug and said, "Let\'s go home!"'
  3. >>>
复制代码


原始字符串


        * 好像反斜杠是一个好东西,但不妨试试打印:str = 'C:\now'   
       
  1. >>> str = 'C:\now'
  2. >>> print(str)            #发现打印的内容有缺失,原来是\n表示回车
  3. C:
  4. ow
  5. >>>
复制代码


        * 我们可以用反斜杠对自身进行转义:
       
  1. >>> str = 'C:\\now'
  2. >>> print(str)
  3. C:\now
  4. >>>
复制代码


        * 但如果对于一个字符串中有很多个反斜杠:str = 'C:\Program Files\Intel\WiFi\Help'
        * 原始字符串的使用非常简单,只需要在字符串前边加一个英文字母r即可;
       
  1. >>> str = r'C:\now'
  2. >>> print(str)
  3. C:\now
  4. >>> str = r'C:\now\fishc\a'        #若是遇到这种长长的路径,就很方便,不用每个都转义
  5. >>> print(str)
  6. C:\now\fishc\a
  7. >>> str = r'C:\now\fishc\a\'       #注意,原始字符串不能以反斜杠结尾,否则会报错
  8. SyntaxError: EOL while scanning string literal
  9. >>> str = r'C:\now\fishc\a' + '\\'    #若是需要反斜杠结尾,那么使用字符串的拼接来解决
  10. >>> print(str)
  11. C:\now\fishc\a\
  12. >>>
复制代码


长字符串


        * 如果希望得到一个跨越多行的字符串,例如:

            从明天起,做一个幸福的人
            喂马,劈柴,周游世界
            从明天起,关心粮食和蔬菜
            我有一所房子,面朝大海,春暖花开

            从明天起,和每一个亲人通信
            告诉他们我的幸福
            那幸福的闪电告诉我的
            我将告诉每一个人

            给每一条河每一座山取一个温暖的名字
            陌生人,我也为你祝福
            愿你有一个灿烂的前程
            愿你有情人终成眷属
            愿你在尘世获得幸福
            我只愿面朝大海,春暖花开

        * 这我们就需要使用到三重引号字符串!

                结果展示
               
  1. >>> str = """            从明天起,做一个幸福的人
  2.             喂马,劈柴,周游世界
  3.             从明天起,关心粮食和蔬菜
  4.             我有一所房子,面朝大海,春暖花开
  5.             从明天起,和每一个亲人通信
  6.             告诉他们我的幸福
  7.             那幸福的闪电告诉我的
  8.             我将告诉每一个人
  9.             给每一条河每一座山取一个温暖的名字
  10.             陌生人,我也为你祝福
  11.             愿你有一个灿烂的前程
  12.             愿你有情人终成眷属
  13.             愿你在尘世获得幸福
  14.             我只愿面朝大海,春暖花开
  15. """
  16. >>> print(str)
  17.             从明天起,做一个幸福的人
  18.             喂马,劈柴,周游世界
  19.             从明天起,关心粮食和蔬菜
  20.             我有一所房子,面朝大海,春暖花开
  21.             从明天起,和每一个亲人通信
  22.             告诉他们我的幸福
  23.             那幸福的闪电告诉我的
  24.             我将告诉每一个人
  25.             给每一条河每一座山取一个温暖的名字
  26.             陌生人,我也为你祝福
  27.             愿你有一个灿烂的前程
  28.             愿你有情人终成眷属
  29.             愿你在尘世获得幸福
  30.             我只愿面朝大海,春暖花开
  31. >>> str
  32. '            从明天起,做一个幸福的人\n            喂马,劈柴,周游世界\n            从明天起,关心粮食和蔬菜\n            我有一所房子,面朝大海,春暖花开\n\n            从明天起,和每一个亲人通信\n            告诉他们我的幸福\n            那幸福的闪电告诉我的\n            我将告诉每一个人\n\n            给每一条河每一座山取一个温暖的名字\n            陌生人,我也为你祝福\n            愿你有一个灿烂的前程\n            愿你有情人终成眷属\n            愿你在尘世获得幸福\n            我只愿面朝大海,春暖花开\n'
  33. >>>
复制代码


最后需要提醒大家的是,编程的时候,时刻要注意Speak English!切记,编程中使用的标点符号都是英文的!切忌使用中文的标点符号!

评分

参与人数 2鱼币 +14 收起 理由
康小泡 + 6
小甲鱼 + 8 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-6-15 22:46:55 | 显示全部楼层
课后笔记补充

1、如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?
参考答案
  1. >>>str = r'C:\Program Files\FishC\Good''\\'
复制代码

这和我之前预想的使用拼接符(+)操作的效果一致,显示如下
  1. >>> str = r'C:\Program Files\FishC\Good''\\'
  2. >>> str
  3. 'C:\\Program Files\\FishC\\Good\\'
  4. >>> print(str)
  5. C:\Program Files\FishC\Good\
  6. >>> str = r'C:\Program Files\FishC\Good' + '\\'
  7. >>> str
  8. 'C:\\Program Files\\FishC\\Good\\'
  9. >>> print(str)
  10. C:\Program Files\FishC\Good\
复制代码

结论就是,字符串之间不需要拼接符(+),也可以顺利地粘合在一起,验证如下
  1. >>> str1='your''teacher'
  2. >>> str1
  3. 'yourteacher'
  4. >>> print(str1)
  5. yourteacher
  6. >>> str1='your''teacher''is''my''mother.'
  7. >>> str1
  8. 'yourteacherismymother.'
  9. >>> str1='your ''teacher ''is ''my ''mother.'
  10. >>> str1
  11. 'your teacher is my mother.'
  12. >>> str1 = 'your ' 'teacher '   'OK'
  13. >>> str1
  14. 'your teacher OK'
  15. >>>
复制代码



2、变量名的BUG

变量名BUG

变量名BUG

结论:Python 貌似不介意我们对内置函数进行赋值操作,因此,这点我们以后就要注意啦,否则可能会出现以下的 BUG:
  1. >>> print = 1
  2. >>> print("I love FishC")
  3. Traceback (most recent call last):
  4.   File "<pyshell#31>", line 1, in <module>
  5.     print("I love FishC")
  6. TypeError: 'int' object is not callable
  7. >>>
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-6 11:22:53 | 显示全部楼层
这笔记写得很细致,学习了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 12:53:28 | 显示全部楼层
复习了一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 12:53:58 | 显示全部楼层
joey234you 发表于 2017-6-15 22:46
课后笔记补充:

1、如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-29 19:14:34 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-9 14:04:32 | 显示全部楼层
受教了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-29 08:14:40 | 显示全部楼层
写的非常好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-29 15:14:15 | 显示全部楼层
非常好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 22:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表