第七次博客

     这次学长要求写Python学习总结,但我的Python还没学完,进度有点慢,所以这次我只能写一写我所学到的Python知识。Python相比较于C++来说,Python比较简单,但如果一开始就学Python会很难理解一些东西,所以先学了C++打好一定的计算机语言基础后,学习Python就比较简单了,另外需要注意的是Python和C++语法格式上的一些不同,就比如Python语句最后面不用加分号,而C++这需要加分号等等的一些不同。

     学习Python前要下载Python的最新版本,至于如何安装和需要注意什么自己百度就可以查到,所以这里我就不再赘述了。 安装好Python后就可以开始Python的学习了。

     变量:变量存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。如:

>>>counter = 100 # 赋值整型变量

>>>miles = 1000.0 # 浮点型

>>>name = "John" # 字符串

counter、miles、name都是变量。

在Python中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解。请务必牢记下述有关变量的规则。

1.变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message。

2.变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。

3.不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print 。

4.变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。

5.慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。

     字符串:输出字符串时用双引号或单引号都行,用双引号括起来很多单引号可以输出单引号,反之亦然,并且用反斜杠定义双引号和单引号也可以输出双引号和单引号。title()函数可以让字符串的首字母大写,upper()函数可以让字符串所有字母大写,而lower()函数可以让字符串所有字母小写,还用很多有用的函数这里就不再赘述了,下面的很多函数也是一样,需要时可以自己查询。在很多情况下,都需要合并字符串,Python使用加号(+ )来合并字符串,这种合并字符串的方法称为拼接 。如:

>>>first_name = "ada" 

>>>last_name = "lovelace" 

>>>full_name = first_name + " " + last_name 

>>>print(full_name)

这里加一个空白,使用制表符或换行符来添加空白,在编程中, 空白泛指任何非打印字符,如空格、制表符和换行符。你可使用空白来组织输出,以使其更易读。 要在字符串中添加制表符,可使用字符组合\t,要在字符串中添加换行符,可使用字符组合\n,还可在同一个字符串中同时包含制表符和换行符\n\t。删除空白, 在程序中,额外的空白可能令人迷惑。对程序员来说,'python' 和'python ' 看起来几乎没什么两样,但对程序来说,它们却是两个不同的字符串。Python能够发 现'python ' 中额外的空白,并认为它是有意义的——除非你告诉它不是这样的。Python能够找出字符串开头和末尾多余的空白。要确保字符串末尾没有空白,可使用方法rstrip() 。

>>> favorite_language = 'python ' 

>>> favorite_language 

'python '

>>> favorite_language.rstrip() 

'python'

>>> favorite_language

'python '
存储在变量favorite_language 中的字符串末尾包含多余的空白。你在终端会话中向Python询问这个变量的值时,可看到末尾的空格。对变 量favorite_language 调用方法rstrip() 后,这个多余的空格被删除了。然而,这种删除只是暂时的,接下来再次询问favorite_language 的值时,你会发 现这个字符串与输入时一样,依然包含多余的空白。要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中:

>>> favorite_language = 'python ' 

>>> favorite_language = favorite_language.rstrip() 

>>> favorite_language 

'python'
为删除这个字符串中的空白,你需要将其末尾的空白剔除,再将结果存回到原来的变量中。在编程中,经常需要修改变量的值,再将新值存回到原来的变量中。这就是 变量的值可能随程序的运行或用户输入数据而发生变化的原因。 你还可以剔除字符串开头的空白,或同时剔除字符串两端的空白。为此,可分别使用方法lstrip() 和strip(),lstrip() 和strip()的使用方法和rstrip()一样。

     注释:在Python中,注释用井号(# )标识。井号后面的内容都会被Python解释器忽略。

     列表:列表 由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有 任何关系。在Python中,用方括号[ ] 来表示列表,并用逗号来分隔其中的元素。列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。如:

>>>bicycles = ['trek', 'cannondale', 'redline', 'specialized']

>>>print(bicycles[0])

trek

在Python中,第一个列表元素的索引为0,而不是1。修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。如:

>>>motorcycles = ['honda', 'yamaha', 'suzuki'] 

>>>print(motorcycles) 

['honda', 'yamaha', 'suzuki']

>>>motorcycles[0] = 'ducati' 

>>>print(motorcycles)

['ducati', 'yamaha', 'suzuki']

在列表中添加新元素时,最简单的方式是将元素附加到列表末尾。方法append() 将元素添加到了列表末尾,而不影响列表中的其他所有元素。使用方法insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。如:

>>>motorcycles = ['honda', 'yamaha', 'suzuki']

>>>motorcycles.insert(0, 'ducati') 

>>>print(motorcycles)

['ducati', 'honda', 'yamaha', 'suzuki']

如果知道要删除的元素在列表中的位置,可使用del 语句,使用del 可删除任何位置处的列表元素,条件是知道其索引。

>>>motorcycles = ['honda', 'yamaha', 'suzuki'] 

>>>print(motorcycles)

['honda', 'yamaha', 'suzuki']

>>>del motorcycles[0] 

>>>print(motorcycles)

['yamaha', 'suzuki']

有时候,你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使用方法remove() 。

>>>motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati'] 

>>>print(motorcycles)

['honda', 'yamaha', 'suzuki', 'ducati']

>>>motorcycles.remove('ducati') 

>>>print(motorcycles)

['honda', 'yamaha', 'suzuki']

另外方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。列表中还有许多有用的函数,比如pop()函数、sort()函数、reverse()函数等等。和列表的相关的东西还有很多,这里由于才学疏浅,就不在讲解了。

     元组:元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。对列表的很多使用方法也可以对元组使用,元组与列表很大的不同是元组的元素不能修改、删除和添加。

     字典:在Python中,字典是一系列键—值对  。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将 任何Python对象用作字典中的值。在Python中,字典用放在花括号{} 中的一系列键—值对表示,如:

>>>alien_0 = {'color': 'green', 'points': 5}

键—值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。要获取与键相关联的值,可依次指定字典名和放在方括号内的键,

>>>alien_0 = {'color': 'green'}

>>>print(alien_0['color'])

green

字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。

 >>>alien_0 = {'color': 'green', 'points': 5} 

print(alien_0)

{'color': 'green', 'points': 5}

>>>alien_0['x_position'] = 0

>>>alien_0['y_position'] = 25 

>>>print(alien_0)

{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0}

要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。对于字典中不再需要的信息,可使用del 语句将相应的键—值对彻底删除。使用del 语句时,必须指定字典名和要删除的键。有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

     if语句:if语句的格式:>>>if conditional_test:    

                                         >>>       do something

每条if 语句的核心都是一个值为True 或False 的表达式,这种表达式被称为条件测试 。Python根据条件测试的值为True 还是False 来决定是否执行if 语句中的代码。如果 条件测试的值为True ,Python就执行紧跟在if 语句后面的代码;如果为False ,Python就忽略这些代码。要检查是否两个条件都为True ,可使用关键字and 将两个条件测试合而为一;如果每个测试都通过了,整个表达式就为True ;如果至少有一个测试没有通过,整个表达式就 为False 。关键字or 也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。仅当两个测试都没有通过时,使用or 的表达式才为False 。要判断特定的值是否已包含在列表中,可使用关键字in。还有些时候,确定特定的值未包含在列表中很重要;在这种情况下,可使用关键字not in。

经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else 语句。if-else 语句块类似于简单的if 语句,但 其中的else 语句让你能够指定条件测试未通过时要执行的操作。if-else 语句格式:

>>>if conditional_test:    

>>>       do something

>>>else :

>>>       do something

经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else 结构。Python只执行if-elif-else 结构中的一个代码块,它依次检查每个条件测试,直到遇到通过 了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。if-elif-else 结构:

>>>if conditional_test:    

>>>       do something

>>>elif conditional_test:

>>>       do something

>>>else :

>>>       do something

如果条件更多,依据需要添加elif就可以了。Python并不要求if-elif 结构后面必须有else 代码块,else 是一条包罗万象的语句,只要不满足任何if 或elif 中的条件测试,其中的代码就会执行,这可能会引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用 一个elif 代码块来代替else 代码块。

     函数input():函数input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中,以方便你使用。每当你使用函数input() 时,都应指定清晰而易于明白的提示,准确地指出你希望用户提供什么样的信息——指出用户该输入任何信息的提示都行,如:

>>>name = input("Please enter your name: ")

>>>print("Hello, " + name + "!")

Please enter your name: Eric

Hello, Eric!

使用函数input() 时,Python将用户输入解读为字符串,函数int() 将数字的字符串表示转换为数值表示。

     for循环:for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次)。for循环的基本结构如下:

第七次博客

for循环可以用于很多地方,如列表、元组和字典等等。

     while循环:for循环和while循环,两者的相同点在于都能循环做一件重复的事情;不同点在于,for循环是在序列穷尽时停止,while循环是在条件不成立时停止。

第七次博客

要立即退出while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break 语句。break 语句用于控制程序流程,可使用它来控制哪些代码行将执行, 哪些代码行不执行,从而让程序按你的要求执行你要执行的代码。要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue 语句,它不像break 语句那样不再执行余下的代码并退出整个循环。

     函数:示例:

>>>def  greet_user():  

             print("Hello!")

>>>greet_user()

Hello!

这个示例演示了最简单的函数结构。使用关键字def 来告诉Python你要定义一个函数。这是函数定义,向Python指出了函数名,还可能在括号内指出函数为完成其 任务需要什么样的信息。在这里,函数名为greet_user() ,它不需要任何信息就能完成其工作,因此括号是空的(即便如此,括号也必不可少)。最后,定义以冒号结尾。 紧跟在def greet_user(): 后面的所有缩进行构成了函数体。代码行print("Hello!") 是函数体内的唯一一行代码,greet_user() 只做一项工作:打印Hello! 。要使用这个函数,可调用它。函数调用 函数调用 让Python执行函数的代码。要调用函数,可依次指定函数名以及用括号括起的必要信息,由于这个函数不需要任何信息,因 此调用它时只需输入greet_user() 即可。和预期的一样,它打印Hello! 。

只需稍作修改,就可以让函数greet_user() 不仅向用户显示Hello! ,还将用户的名字用作抬头。为此,可在函数定义def greet_user() 的括号内添加username 。通 过在这里添加username ,就可让函数接受你给username 指定的任何值。现在,这个函数要求你调用它时给username 指定一个值。调用greet_user() 时,可将一个名字 传递给它,如下所示:

>>>def greet_user(username):

        print("Hello, " + username.title() + "!")

>>>greet_user('jesse')

Hello, Jesse!

代码greet_user('jesse') 调用函数greet_user() ,并向它提供执行print 语句所需的信息。这个函数接受你传递给它的名字,并向这个人发出问候,同样,greet_user('sarah') 调用函数greet_user() 并向它传递'sarah' ,打印Hello, Sarah! 。你可以根据需要调用函数greet_user() 任意次,调用时无论传 入什么样的名字,都会生成相应的输出。

在函数greet_user() 的定义中,变量username 是一个形参——函数完成其工作所需的一项信息。在代码greet_user('jesse') 中,值'jesse' 是一个实参。实参是 调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。在greet_user('jesse') 中,将实参'jesse' 传递给了函数greet_user() ,这个 值被存储在形参username 中。

编写函数时,可给每个形参指定默认值 。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数 调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。

     总结:Python暂时学到了这里,学得还不是太好,就比如for循环、while循环、函数我现在学的还是很肤浅,对于它们的一些特殊的用法不是很理解。下一步我会加快我的Python学习,对于即将要开展的专题学习我也尽可能的不拉下进度。