导读
在本章中我们将学习到Python中的各种数据类型(如整型,浮点型,字符串等),我们会把得到的数据储存到变量当中去(就像给数据一个名字),并在程序中用到这些变量(数据)。
第一个Python程序
按照一般教程的尿性,程序员的第一个程序往往是输出”Hello World”,至于为什么,因为年代久远已经无法考证了。但是,我们的教程不一样(我们不一样,不一样,一样,样~),我们的第一个程序就是——输出”Hello My World!”,惊不惊喜,意不意外?接下来,就让我们进入正题。
打开文本编辑器(本教程采用的是sublime text3,以后如无特殊说明,皆在此编辑器上运行),找到File–>new file,在出现的空白页上敲入:
print(“Hello My World!”)
再次点击file–>save as,选择文件保存位置,命名为hello_world.py,接下来按住ctrl+b,或者tool–>build,可以看到运行结果,如下:
Hello My World!
[Finished in 0.1s]
这样我们的第一个Python程序就完成了,我知道诸君一定有很多疑问,下面就让我来一一解释。
Python文件的命名规则是必须以.py为后缀(py没有别的什么意思啦),这样Python解释器才会识别运行它,而文件的名字最好是要与程序内容相关,不然在后面编写了很多程序以后,自己都会混乱。
一般情况下,Python会逐行运行直到文件最后,如果程序出现错误则会弹出相应提示,至于解决办法(debug是不可能debug的,这辈子都不可能),以后的章节会细讲。
print是Python的输出语句,在英文里的意思是打印,它告诉解释器,跟在后面括号里的内容是要打印输出到显示器上面的,这样我们就可以在控制台看到程序运行结果啦。
变量
接下来我们尝试在hello_world.py中使用一个变量。这里的变量和数学里的变量一样,而赋予变量值的过程叫做赋值。在原来的代码中做如下修改:
message=”Hello My World!”
print(message)
记得要先保存再运行,得到:
Hello My World!
[Finished in 0.1s]
运行结果和我们上次的一样,可以看到,变量名message相当于替代了”Hello My World!”在print语句中的作用,就像人名一样,你可以叫他全名,亦可以用手指着他(当然这样很不礼貌就是了)。
我们想,如果向同一个变量多次赋值,结果会怎样呢,我们对程序做进一步拓展,再次给message赋值,如下:
message=”Hello My World!”
print(message)
message=”Hello My World!How are you?”
print(message)
保存后运行输出:
Hello My World!
Hello My World!How are you?
[Finished in 0.1s]
可以看到,同样是变量名message为什么两次输出的结果不一样呢?我们前面提到过,Python是逐行运行的,当程序运行到第一个print语句时,此时的message的值是”Hello My World!”,所以打印输出自然未变,而当程序运行到第三行时,我们再次赋值给了变量message,这时候最近的一次赋值就会覆盖掉上一次的值,自然print输出message就变成了Hello My World!How are you?了。
变量命名规则
就像给人取名字一样,我们总是想要一个好的,贴切的名字(那位叫狗剩的同学,请你坐下),在Python中也是这样,给变量名命名要符合规范,词意准确,所以请务必牢记以下命名规则:
变量名只能包含字母,数字,下划线,并且只能以字母或下划线打头。如,message_1。
变量名不能包含空格,但可以使用下划线进行分隔。如,teacher_message。
不能将Python关键字当做变量名,因本文篇幅有限不一一列举(其实是我记不住)。如,print。
变量名简短准确。如,姓名用name,而不要用n或者xingming(笑)。
一个好的变量名就像一张精致的名片,带有变量自身独特的气息,并且会伴随程序的一生(好吧,严格意义上并没有一生,变量最后都难逃被销毁的命运啊,正如人生一样,但既然来到了这个世界,就如夏花般灿烂美好的活下去吧)。
字符串
字符串(String)顾名思义,就是由字符组成的词串,在Python中,用引号引起来的都是字符串,可以是单引号,双引号,如:
“Hello My World!”
‘This is a string.’
当然,这种灵活性能让你在字符串中包含引号和撇号,前提是在引号匹配的情况下,如:
“Hi,I’m Jack.”
‘ I told my friend, “I love Python.” ‘
那如果输出的语句包含换行怎么办呢,我们可以通过三个单引号(”’…”’)来解决:
message=”’hello
my name is jack
what’s you name”’
print(message)
输出结果显而易见:
hello
my name is jack
what’s you name
字符串的使用关键就在于引号要相互匹配,尤其是在多重引号下(多重引号最为致命,笑),下面讲述字符串的简单使用方法。
方法
什么是方法?方法相当于一个函数,一个小程序,而这个程序不需要我们自己编写(当然也可以加以修改),称为内置方法(函数),当我们使用方法(或函数)的时候,Python就会自动调用该方法,以满足我们的需求。
方法的使用主要有两种,即带参(数)和不带参(数),在后面的例子中我们会逐渐认识熟悉,这里就不加细讲。
使用方法修改字符串大小写
修改字符串大小写的方法为title(),可以把首字母转换为大写,其他字母转换为小写,如:
name=”adam smith”
print(name.title())
保存后运行,得到:
Adam Smith
让我们来分析一下这个程序,第一行将”adam smith”赋值给变量name,name此时是字符串,所以name可以引用字符串的方法,第二行的代码name.title()就是引用了一个名为title()的方法(无参数),此外我们还可以结合英语语意来简单理解方法的作用,而不需要死记硬背。编程是自由的,我们可以随心所欲的简单“测试”一下title()方法,如:
name=”adam smith”
print(name.title())
name=”adAM smith”
print(name.title())
name=”Adam Smith”
print(name.title())
打印输出结果为:
Adam Smith
Adam Smith
Adam Smith
可以看到,无论name的值是什么“形状”,最后输出的结果都是一样的,这也反映了我们title()函数的功能。
其他大小写转换方法
让我们再看两个简单例子:
name=”Adam Smith”
print(name.upper())
print(name.lower())
运行一下程序可以看到:
ADAM SMITH
adam smith
同样是name,我们用了两个不同的方法upper()和lower()方法,得到的结果一个是全部变成了大写,另一个相反,全部变成了小写,这样我们就知道了原来upper()方法是把字符串转换为大写lower()方法是把字符串转换为小写的方法。
合并字符串
很多情况下,我们都要用到合并字符串,比如在电话薄里我们常常把姓和名分开存储,必要时再取出来合并。下面我们用程序模拟一下合并的过程(好吧,其实就是一个 + 把字符串合并):
first_name=”Adam”
last_name=”Smith”
full_name=first_name+” “+last_name
print(full_name)
为了美观,我们可以在中间加上一个空格,运行程序可以看到:
Adam Smith
在这里+不等于数学上的+(什么数位对齐加之类的),而是像鼻涕一般(笑)把两个字符串黏在一起,也就是合并。
当然,我们可以在加上点东西,比如把打印输出语句改为:
print(“Hello,My name is “+full_name+”,What’s your name?”)
输出结果为:
Hello,My name is Adam Smith,What’s your name?
诸如此类。
制表符,换行符的使用
制表符(\t),换行符(\n)这种带\的特殊字符称为转义字符,转义字符有很多,只需要掌握常用的几种就可以。我们通常用制表符、换行符来给代码添加空白,让我们来看具体的例子:
print(“python”)
print(“\tpython”)
print(“pyhton\njava\nc”)
让我们看看输出结果:
python
python
pyhton
java
c
转义符顾名思义,当程序运行到这里时,就不再是简单的输出\t之类的了,而是像翻译一样,把他翻译成他所代表的含义,可以看到\t(制表符)相当于4个空格,而\n相当于换行。
删除空白
作为Python程序员,常常会遇到很多莫名其妙的bug,而最苦逼的事情莫过于debug(找程序存在的bug)了,当最后发现原来是多了个空格的时候,内心是崩溃的。笔者在学习的过程中也是深有体会,常常是绞尽脑汁,抓耳挠腮,顺便心疼一地的头发。所以,空格就单纯用空格,tab就单纯用tab。。。请记住这个血的教训。。。
回到正题,删除字符串两端的空白用strip(),删除左边(left)空白就是lstrip(),右边(right)空白就是rstrip(),实例如下:
language=” Python “
print(“原格式—“+language+”—“)
print(“删除左边空格—“+language.lstrip()+”—“)
print(“删除右边空格—“+language.rstrip()+”—“)
print(“删除两端空格—“+language.strip()+”—“)
为了让结果更直接,我们加上左右两边的修饰,运行结果如下:
原格式— Python —
删除左边空格—Python —
删除右边空格— Python—
删除两端空格—Python—
可以看到,字符串两边无论是一个还是两个空格都会一并删除。
数字
同数学上的数字一样,Python中的数也就不外乎整数,浮点数(小数)两种,当然,这些数都能用于加(+)减(-)乘(*)除(/)的运算(计算机中的乘除符号不同于数学),接下来让我们来学习一下数的运用。
整数
直接看实例更为直观:
x=2
y=3
a=2+3
b=2-3
c=2*3
d=2/3
print(a)
print(b)
print(c)
print(d)
保存后运行得到:
5
-1
6
0.6666666666666666
值得我们注意的是最后一个,数学意义上的2/3得到的是一个无限循环小数,而计算机中的2/3因为存储结果的长度有限,会自动截断并且没有四舍五入。
再看一个特殊的运算符号,**,双乘号表示乘方运算:
z=2**3
print(z)
运行结果为:
8
Python中的括号(())和数学中的括号一样,表示了运算的次序,这里就不再赘述,同学们可以自行测试。
浮点数
同样,我们直接看实例:
x=0.1
y=0.2
a=x+y
b=x-y
c=x*y
d=x/y
print(a)
print(b)
print(c)
print(d)
运行一下程序:
0.30000000000000004
-0.1
0.020000000000000004
0.5
结果显而易见,但其实运算的细节还有很多可讲,我们这里只是先粗略的了解一下Python的运算方式,详细内容会在后面章节中继续呈现。
str()函数
先看一个例子:
age=18
message=”I’m “+age+” years old.”
print(message)
这段代码看似没有错误,但是运行一下我们发现出现了一大段的错误提示消息,这时候我们不能着急,让我们安静的(装也要装出来)分析一下程序:
Traceback (most recent call last):
File “C:\Users\xxx\xxxxx\xxxxx\str.py”, line 2, in
message=”I’m “+age+” years old.”
TypeError: can only concatenate str (not “int”) to str
重点在最后一行(看不懂英文的没关系,我们可以用软件翻译一下),这句话的意思是“只能将str(而不是“int”)连接到str”,前面我们讲过,int是整型,而str是字符串型,电脑毕竟不是人脑,虽然我们人脑可以一眼知道但是电脑却只能一步一步走,所以,当出现int和str混用时,电脑就秀逗了,我们需要做的就是把int转换为str,通过str()函数就可以实现,让我们再看一下修改之后的代码:
age=18
message=”I’m “+str(age)+” years old.”
print(message)
可以看到,此时的age是放在str()函数的括号里面,这就是我们说的带参方法,运行程序可以得到:
I’m 18 years old.
程序正确的输出了我们想要的结果,并且没有出现任何错误提示,这时候我们就可以擦擦额角的汗珠长舒一口气了。
注释
#好的,我们终于来到了本章的最后一个内容。
在Python中#后面的内容就相当于注释,即在程序运行时不会执行的内容,通常注释是为了程序能有更好的可读性,这样当别人在阅读你的程序时或者当你回顾很久以前的程序时就不需要再绞尽脑汁想程序的功能了。
#小提示
在sublime text 3中,鼠标选中你想要注释的内容(或多段内容),按住ctrl+/也能实现注释。
小结
这是本教程正式内容的第一章,我们主要讲了变量,字符串,数字,注释四个部分。
通过本章的学习,我们已经可以实现创建变量,对字符串进行大小写转换,去除左右空格,用整数和浮点数进行基本运算,用注释增强代码可读性等内容。