标签(空格分隔): python
Python有自己的语法规定、标准库函数和各种交互式开发环境特性,熟练掌握它们可以完成了不起的工作,小白初学者刚开始接触时可能会觉得目眩神迷。索性我们这个教程不讲那些,那都是以后的事,我们现在需要的只是最基础的一些概念,用它们,就足够完成许多有趣的事情。
本章会给出一些简单的代码,输入到Shell里就可以立刻看到结果。一定要亲手试一下,好记性不如烂笔头,再简单也自己运行试一次,切勿眼高手低。
本章目录
[TOC]
表达式
按照序章中提过的方式,打开你的IDLE。输入 2+2,你会得到
>>>1+2
3
Python会像计算器一样,输出表达式的结果。这里提到的表达式,通常由值(values,比如上面表达式中的“1”和“2”)和算符(operators,比如“+”)**组成,并且总能在运算后得到一个单一的值。也就是说,在Python代码中,任何能用一个值的位置,也可以使用一个表达式(因为它的本质也是一个值,),比如:
(1+2)+2 # “(1+2)”是一个表达式,取代了原来“1”的位置
当然,一个值本身也是一个表达式,只不过这个表达式的运算结果就是它自己。
基本的数学算符:加+、减-、乘*、除/、整除//、取余%、乘方**。不复多言,那个不清楚的直接在Shell里试试,不要眼高手低(比如平方是**2,常有初学者写成^2,出错以后还百思不得其解)。这些算符的优先级也与数学中相同,如下:
>>> 2 + 3 * 6
20
>>> (2 + 3) * 6
30
>>> 48565878 * 578453
28093077826734
>>> 2 ** 8
256
>>> 23 / 7
3.2857142857142856
>>> 23 // 7
3
>>> 23 % 7
2
>>> 2 + 2
4
>>> (5 - 1) * ((7 + 1) / (3 - 1))
16.0
你只需要输入表达式,而Python总是会将它运算到一个值。
上述这些值、算符、表达式的用法也就是所谓的语法,就像我们汉语有汉语的语法,英语也有英语的语法。写代码必须使用正确的Python语法,Python编译器才能知道我们想做什么,否则它就会报错,像这样:
>>> 5 +
File "<stdin>", line 1
5 +
^
SyntaxError: invalid syntax
>>> 42 + 5 + * 2
File "<stdin>", line 1
42 + 5 + * 2
^
SyntaxError: invalid syntax
“invalid syntax”的意思就是无效的语法。当你拿不准某个用法是否合乎语法时,大胆尝试一下就好。最糟的结果也不过是报错,没什么大不了的,最专业的软件开发者也总会在写代码时遇到报错的。
数据类型之整数、浮点数和字符串
前面我们讲到,表达式是由值和算符组成。我们已经提过算符中的数学算符,现在我们要再讲一下值的基本类型。不同类型的值各有其特点,这里我们只介绍最常见的整数(integer 或 int )、浮点数(floating-point numbers 或者floats)和字符串(strings 或 strs)。
整数,顾名思义,42,就是一个整数。浮点数,就是带小数点的数,比如3.14、42.0。至于为什么叫浮点数,这里不讲,感兴趣的可以自行了解,不了解也不影响本教程的学习。整数与浮点数都是数值,而字符串,则代表了文本。它们的两侧有引号括起来,如'zifuchuan'、'字符串'(注意使用在代码中的引号、逗号和括号等标点符号都是英文标点)。
操作字符串:连接和重复
我们在日常操作时会遇到大量的文本,也就是字符串,比如文件批量重命名、网页内容读取、发邮件、读短信。对字符串进行操作是完成这些任务的基础。字符串操作方法非常多样,我们会在后面细致讲解,这里我们只展示最基础的两种用法:连接和重复。分别 尝试以下代码:
'Python'+'6'
'Python'+6
'Python'*6
如果你没输错,你看的结果应该是这样的:
>>> 'Python'+'6'
'Python6'
>>> 'Python'+6
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
'Python'+6
TypeError: must be str, not int
>>> 'Python'*6
'PythonPythonPythonPythonPythonPython'
可以看到,第一条命令,将字符串'Python'和字符串'6'连接了起来,组成了一个新的字符串'Python6';第二条命令,将字符串'Python'与整数6相加,因为不同类型数据不能直接相加而报错,提示我们要先将int转换为str,数据类型转换我们后面会讲;第三条命令,字符串'Python'与整数6相乘,得到了一个重复了6次'Python'的新字符串。在这里,算符“+”和“*”的用法,显然是与数值相加相乘不一样的。你不妨自己试试字符串乘数字,字符串乘字符串,又会得到怎样的结果。
在变量中储存值
前面讲到值和可以经过运算化为值的表达式,它们代表了我们要处理的数据。我们知道了1+2=3,那如果我们要再次利用“3”这个结果该怎么办呢?每次都输入一个完整的表达式就显得过于麻烦了。这时我们可以将表达式的运算结果保存在变量中。
变量的赋值
我们可以通过赋值语句将值保存在变量中。赋值语句包括变量名、等号(被称作赋值算符)和要保存的值。比如刚才的1+2,我们就可以用a=1+2
这样一句赋值语句,将1=2的运算结果保存在a这个变量中。输入下列代码,体会变量的通途。
>>> food1 = 'jian bing '
>>> jianbing
'jian bing '
>>> food2 = 'guo zi'
>>> food1+ food2
'jian bing guo zi'
>>> food1 + food2 + food1
'jian bing guo zijian bing'
>>> food1 = food1 + 'ji dan'
>>> food1
'jian bing ji dan'
强行划重点:为了帮你们更好的理解变量这个概念,以及变量和值之间的关系,我们来打一个比方。想象一个大箱子,它就代表了我们计算机的内存。我们每创建一个值,就相当于向箱子里放入了一个小盒子。而我们创建不同类型(比如是整数还是字符串)和不同长度长度('aa'就比'a'长一点)的值,就相当于向箱子内放入不同形状、不同体积的盒子。而变量,就是我们在这些盒子上贴的标签,是我们为了方便表示这些盒子而给它们的代号。所以与其说是把值赋给了变量,不如说是把这些变量像标签一样贴到了数据上。能贴就能撕,当你把这个标签贴到别的盒子上,如a=2+3
,它就只代表了这个表达式的值。刚才的1+2
就被遗忘了。
变量的命名
上面提到的a、food1、food2都是变量的名字。这种变量名不能随意指定,它们只能由字母、数字和下划线(_)组成,并且不能由数字打头,并且大小写敏感。也就是说Apple和apple代表的是两个不同的变量。专业的编程领域与特定的变量命名规范,比如PEP 8,但我们不需要去盲目遵循这些别人制定的规范,适合你现在的需求的才是最好的。但有一个原则应该牢记:好的变量名能描述它所包含的数据。就好比收纳箱的标签,你是会根据里面装了什么了标记,还是写上一个“一些东西”了事?再比如你要记录书籍数量,book_num=100
和x=100
哪个更加一目了然?
一段代码,一个程序
Shell的特点在于交互性,也就是你给它一个指令,它立刻给你一个结果。当你想要写一段代码,作为一个完整的程序,你就需要使用文本编辑器了。File→New Window,打开文本编辑器窗口。它与Shell的不同之处就在于,没有提示符>>>,你可以在其中输入多行代码。尝试在此窗口中输入下列代码:
# This program says hello and asks for my name.
print('Hello world!')
print('What is your name?') # ask for their name
myName = input()
print('It is good to meet you, ' + myName)
print('The length of your name is:')
print(len(myName))
print('What is your age?') # ask for their age
myAge = input()
print('You will be ' + str(int(myAge) + 1) + ' in a year.')
输入完毕后按下Ctrl+S,保存代码,文件名为hello.py。编写代码勤保存,养成良好习惯,以防突发意外导致代码丢失。
在编辑器窗口选择Run→Run Module或者按下F5,你的程序就开始运行了。运行结果类似如下:
>>>
================== RESTART: C:/Users/Robin/Desktop/hello.py =================
Hello world!
What is your name?
Liu Dehua
It is good to meet you, Liu Dehua
The length of your name is:
9
What is your age?
25
You will be 26 in a year.
>>>
至此你的程序运行完毕,你可以关掉窗口退出Python,下次想要修改这个脚本时,在File→Open中打开你的hello.py文件即可。
代码解析
让我们来条分缕析,仔细讲解一下上面这段程序的每一行代码,顺便学习几个常用函数。
注释
# This program says hello and asks for my name.
这一行就叫做注释,Python会忽略井号#之后的所有代码。所以你可以用它做一些笔记,增加代码可读性,帮助使用你的代码的后来者更快理解你的思路。即使你的代码只是留为己用,注释也会帮你在你将来想要修改代码时,节省许多时间。总之,写注释是个好习惯。
注释还常被用来暂时取消某一段代码的运行,以求确定代码出错的位置,这是一个常用技巧。
print()函数
print()函数的作用就是将括号内的字符串显示出来。
print('Hello world!')
print('What is your name?') # ask for their name
这两句命令,都调用了print()这个函数,而'Hello world'和'What is your name?'两个字符串则被作为参数,传递给了这个函数。注意输出的结果并不包含引号,这是因为它们并不是字符串的一部分,只代表字符串的起止。
input()函数
input()函数的作用是等待用户键盘输入。
myName = input()
这一句运行后将等待用户键盘打字,并将打字内容作为i字符串赋值内myName这个变量。
打印用户的名字
print('It is good to meet you, ' + myName)
运用我们前面提到的字符串操作方法,将'It is good to meet you, '与变量myName中包含的字符串连接,并显示出来。
len()函数
len()函数将会计算传递给它的字符串的长度,一个字符的长度为1。
print('The length of your name is:')
print(len(myName))
再尝试以下代码,体会len()的用法。
>>> len('hello')
5
>>> len('My very energetic monster just scarfed nachos.')
46
>>> len('')
0
str(), int() 和 float()三个函数
我们讲过三种数据类型,字符串、整数、浮点数,而str(), int() 和 float()就是与之对应的三种数据类型转换函数。顾名思义,它们可以将其他数据类型的数据转换为对应的类型。比如我们前面提过的字符串不能与整数直接相加的问题。如果你有'我今年','岁'两个字符串和一个整数18,想得到一个完整的字符串,'我今年18岁'。直接相加是会报错的:
>>> '我今年'+18+'岁'
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
'我今年'+18+'岁'
TypeError: must be str, not int
>>>
但如果你像下面这样,就没问题了:
>>> '我今年'+str(18)+'岁'
'我今年18岁'
>>>
区别就在于str()这个函数,将18这个整数转换为字符串'18',这样就可以通过算符“+”直接与其他字符串相连接了。
通过下列代码,体会三个函数的功能:
>>> str(0)
'0'
>>> str(-3.14)
'-3.14'
>>> int('42')
42
>>> int('-99')
-99
# int()有取整的效果
>>> int(1.25)
1
>>> int(1.99)
1
>>> float('3.14')
3.14
>>> float(10)
10.0
# 它们遇到无法转换的参数时,就会报错
>>> int('99.99')
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
int('99.99')
ValueError: invalid literal for int() with base 10: '99.99'
>>> int('twelve')
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
int('twelve')
ValueError: invalid literal for int() with base 10: 'twelve'
再来分析之前程序中的代码:
print('What is your age?') # ask for their age
myAge = input()
print('You will be ' + str(int(myAge) + 1) + ' in a year.')
第一句,显示字符,询问年龄;第二句,等待你通过键盘输入年龄,并将你输入的数字以字符串的类型保存在myAge这个变量中;第三句比较复杂,我们从最里层的myAge变量开始分析:
以下7行演示了其运算过程
- print('You will be ' + str(int(myAge) + 1) + ' in a year.')
- print('You will be ' + str(int('18') + 1) + ' in a year.')
- print('You will be ' + str(18 + 1) + ' in a year.')
- print('You will be ' + str(19) + ' in a year.')
- print('You will be ' + '19' + ' in a year.')
- print('You will be 19' + ' in a year.')
- print('You will be 19 in a year.')
总结
本章我们介绍了值、表达式、算符、变量等基本概念,整数、浮点数、字符串三种数据类型及它们的转换函数和简单操作方法,还演示了函数的调用。一些常用的简单函数如len()、print()、input()也完成了初次见面。
网友评论