初学者经常会遇到的困惑,在看书上的或听课都懂,但还是不明白要怎么编程,这是因为缺乏足够的经验。
在学习时,也请在自己操作也模仿敲一下自己的代码,学以致用,在输入代码时的仔细:小到中文标点或英文标点,大到语句的逻辑关系。同时也会发现在运行成功后自己的那份喜悦。
所以,你需要在阅读时打开IDE,为了方便起见我们这里使用anacoda来做为我们使用的IDE,好处就不用多说,集成所有环境,同时还有markdown标记,学习时可以录入笔记也可执行代码。边看边敲代码。这样学习有记录才会有收获。
变量
简单的说,变量就是编程中最基本的存储单位,变量会暂时性的存储你所放进去的内容。
![](https://img.haomeiwen.com/i13303086/076f79cb445e49af.png)
这是windows下python3的IDE环境 当我们定义了变量a = 2019,这样就完成了对a的赋值,接下来输入回车并换行行,你看将看到的结果是2019
这里请注意的是 python对大小写敏感,也就是说a和A完全是两个不同的变量名称,而不是同一个。即便变量是最容易理解的基础知识,那也不要因为简单就随意命名,要保持python的可读性。
Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:16) [MSC v.1915 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 2019
>>> a
2019
>>>
print()
打印是python中最为常见的功能,顾名思义。我们现在就演示一下如上的 打印变量a内容
Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:16) [MSC v.1915 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 2019
>>> print (a)
2019
>>>
接下来我们看一段代
file = open('/usr/yourname/Desktop/filte.txt','w')
file.write('hello world!')
从字面的意思,打开桌面的一个文件,并写入hello world! w代表如果旧面有file.txt这个文件就直接写入"hello word",如果没有file.txt这个文件就创建一个这样的文件
这里要注意的就是
保持良好的命名习惯 ,应该尽量的用英语命名,学编程时同时还能背单词。
扩展阅读
字符串
字符串是什么?分如下三种方式
- 任何在这双引号之间的文字 “thist is a string”
- 任何在这单引号中间的文字,单引号其实和双引号完完一样 ‘this is a string’
- 三个引号被用于过于长段的文字或者说明,只要三引号不完,你就可以随意换行写下文字 '''三个引号'''
- 字符串的基本用法
现在我们尝试着了解一些字符串的基本用法----合并。
what_he_does = ' plays '
his_instrument = 'guitar'
his_name = 'Robert Johnson'
artist_intro = his_name + what_he_does + his_instrument
print(artist_intro)
Robert Johnson plays guitar
[Finished in 0.4s]
最终的输出结果就是上面合并内容
也许你会注意到,上面我们说的变量时,有些变量被不同形式的赋值,我们现在试着在IDE中这样做:
num = 1
string = "1"
print (num + string)
你一定会得到报错的结果,原因是字符串(string)只是python中的一种数据类型,另一种数据类型则称之不整数(integer),而不同的数据类型是不能够合并的。但是可以通过一些方法可以得到转换
![](https://img.haomeiwen.com/i13303086/6d9482b38efc79d4.png)
这里说一句,如果你不知道变量是什么类型,那么可以通过type() 函数来查看类型。如在IDE中输入print(type(word))
另外,由于中文注释会导致报错,所以需要在文件开头加一下行魔法注释 #coding:utf-8
print(type(word))
class 'str'
按下来,我们来转化数据类型
#coding:utf-8
num = 1
string = '1'
num2 = int(string)
print(num + num2)
![](https://img.haomeiwen.com/i13303086/a1d83d6673bd1d76.png)
既然字符相加可以,那么字符串之间能不能相乘呢? 当然可以,输入如下代码:
#coding:utf-8
words = 'hello'*3
print(words)
hellohellohello
接下来我们来尝试解决一个更复杂的问题
word = 'a loooooong word'
num = 12
string = 'bang!'
total = string * (len(word) - num) #等价于字符串'bang!'*4
print(total)
bang!bang!bang!bang!
到这里相当四则运算一般简单
- 字符串的分片与索引
字符串可以通过 string[x]的方法进行索引、分片。也就是加一个[]。字符串的分版本(slice)实际上可以看作是字符串中找出来你要截取的东西,复制出来一小段你要的长度,然后存储在另一个地方,而不会对字符串这个源文件改动。分片获得的每个字符串可以看作是原字符串的一个副本。
我们先来看如下代码,进行分析
name = 'My name is Jim'
print(name[0])
print(name[-2])
print(name[0:7])
print(name[3:])
print(name[:3])
结果:
M
i
My name
name is Jim
My
![](https://img.haomeiwen.com/i13303086/c593749f3dbf00f4.png)
以name[0-7]为例,截取的编号从0到7字符,但不包含第7个字符结束
像name[3:]这样的写法代表着编号为3的字符到结束字符串片段
像name[:3]则代表从编号0开始到3的字符,但不包含第3个字符
现在我们试着解决一个稍微复杂的问题,来做一个文字小游戏叫做---“找出你朋友中的魔鬼”,输入如下代码:
word = 'friends'
find_the_evil_in_your_friends = word[0]+word[2:4]+word[-3:-1]
print(find_the_evil_in_your_friends)
运行结果为:fiend
注: 过长的代码可以使用‘\’来换行,属于一行的代码同时会一个缩进表示一行的,如果在IDE中要按“enter”就会自动换行,这个很方便
再来看一个实际项目要用到的分片方法
在实际的项目中切片十分好用的,如下有几个网址(网址是经过处理的,所以你是打不开的)是使用python约定爬虫后,从网页解析出来部分的图片链接,现在总计有500余张有这样链接的图片要进行下载,也就是说我们需要给这500张不同格式的图片(png.jpg.gif)以一个统一的方式进行命名。通过观察规律,决定以链接尾部倒数10个字符的方式进行命名,于是有如下代码:
'[http://ww1.site.cn/14d2e8ejw1exjogbxdxhj20ci0kuwex.jpg'](http://ww1.site.cn/14d2e8ejw1exjogbxdxhj20ci0kuwex.jpg')
'[http://ww1.site.cn/85cc87jw1ex23yhwws5j20jg0szmzk.png'](http://ww1.site.cn/85cc87jw1ex23yhwws5j20jg0szmzk.png')
'[http://ww2.site.cn/185cc87jw1ex23ynr1naj20jg0t60wv.jpg'](http://ww2.site.cn/185cc87jw1ex23ynr1naj20jg0t60wv.jpg')
'[http://ww3.site.cn/185cc87jw1ex23yyvq29j20jg0t6gp4.gif'](http://ww3.site.cn/185cc87jw1ex23yyvq29j20jg0t6gp4.gif')
针对如上URL我们执行如下代码
url = 'http://ww1.site.cn/14d2e8ejw1exjogbxdxhj20ci0kuwex.jpg'
file_name = url[-10:]
print(file_name)
0kuwex.jpg
0kuwex.jpg 这样你会得到这样的结果
字符串的方法
-
python是面向对象进行编程的语言,而对象拥有各种功能、特性,专业术语称之为----方法(method)。为了方便理解,我们假定日常生活中的的车是“对象”,即car。然后众所周知,汽车还有很多特性和功能,其中“开”就是一个汽车重要的功能,于是汽车这个对象使用‘开’这个功能,我们在python编程中就可以表述成这样 car.drive()
-
在理解了对象的方法后,我们来看这样的一个场景,很多时候你使用手机号在网站注册帐户信息,为了保证用户的信息安全,通常帐户信息只会显示后四位,其余则由‘*’来代替,我们就试着用字符串的方法来完成这一功能
输入代码:
phone_number = '151-012-28308'
hiding_number = phone_number.replace(phone_number[:9],'*' * 9)
print(hiding_number)
![](https://img.haomeiwen.com/i13303086/de5a2d14292f2763.png)
其中我们使用了一个新的字符串方法replace()进行“遮挡”。repalce方法的括号中,第一个phone_number[:9]代表要被替换的部分,后面''9表示将要替换成什么字符,也就是乘以9,显示9个号,从而得到最终的结果:*********8308
我们来尝试解决一个复杂的问题,来模拟手机通讯录的电话号码联想功能,这里只是演示一下大体的思路,真实实现的情况可能远比这复杂。
![](https://img.haomeiwen.com/i13303086/909de81e3cd39beb.png)
输入代码:
search = '168'
num_a = '1386-168-0006'
num_b = '1681-222-0006'
print(search + ' is at ' + str(num_a.find(search)) + ' to '+ str(num_a.find(search) + len(search)) + ' of num_a') print(search + ' is at ' + str(num_b.find(search)) + ' to '+ str(num_b.find(search) + len(search)) + ' of num_b')
![](https://img.haomeiwen.com/i13303086/b1eec730af1ebbb2.png)
结果:
168 is at 5 to 8 of num_a
168 is at 0 to 3 of num_b
字符串格式华符
____a word she can get what she ____ for.
A.With B.came
如上 像这样的填空题会让我印象深刻,当字符串中有多个这样的“空”需要填写时,我们可以使用.format()进行处理,它的基本使用方法有如下几种,输入如下三段代码,相当于三种方法均可实现:
print('{} a word she can get what she {} for.'.format('With','came'))
print('{preposition} a word she can get what she {verb} for'.format(preposition = 'With',verb = 'came')) print('{0} a word she can get what she {1} for.'.format('With','came'))
![](https://img.haomeiwen.com/i13303086/66cfbf65c118187a.png)
这种字符串填空的方式使用很广泛,例如下面这段代码,可以填充网址中的空缺的城市数据
city = input ("write down the name of city:")
url = "http://apistore.baidu.com/microservice/weather?citypinyin={}".format(city)
此处只是部分百度api实现客户端天气插件代码的片段
本单节到这里就了解了变量和字符串
基本概念和常用的使用方法。
网友评论