您的位置:首页 > 编程语言 > Python开发

python基础知识

2015-12-21 21:21 567 查看
print,中文意思是打印,在python里它不是往纸上打印,而是打印在命令行,或者叫终端、控制台里面。print是python里很基本很常见的一个操作,它的操作对象是一个字符串(什么是字符串,此处按住不表,且待日后慢慢道来)。基本格式是: print 你要打印的东西或者 print(你要打印的东西)这里一定要英文字符的括号,所有程序中出现的符号都必须是英文字符,注意别被你的输入法坑了。
注意:如果你是python3及以后的版本,一定得用print(),不然会出错。
各位同学可以在自己的python环境中试着输出以下内容:
>>> print "hello"hello>>> print('world')world>>> print 11>>> print(3.14)3.14>>> print 3e303e+30>>> print 1 + 2 * 37>>> print(2 > 5)False
python3记得在后面必须加上()
直接在print后面加一段文字来输出的话,需要给文字加上双引号或者单引号。大家发现,print除了打印文字之外,还能输出各种数字、运算结果、比较结果等。你们试着自己print一些别的东西,看看哪些能成功,哪些会失败,有兴趣的话再猜一猜失败的原因。
其实在python命令行下,print是可以省略的,默认就会输出每一次命令的结果。就像这样:
>>> 'Your YiDa!''Your YiDa!'>>> 2+13+250265>>> 5<50True

python有一个接收命令行下输入的方法: input()注意,和print不同的是,这次我们必须得加上()了,而且得是英文字符的括号
好了,终于可以搬出那个弱智小游戏了,耶!游戏里我们需要跟程序一问一答,所以我们先把话给说上。
打开我们的python编辑器,不管是IDLE,在线编辑器,还是其他的IDE。在代码编辑器中输入下面几句代码:
print "Who do you think I am?" input() print "Oh, yes!"
然后,Run!(Forrest Run!)你会在命令行中看到,程序输出了第一句之后就停住了,这是input在等待你的输入。
输入你的回答,回车。你会看到程序的回答。注意!引号!!又是引号!!!和print一样,如果你输的是一串文字,要用引号''或者""引起来,如果是数字则不用。
(插一句,python还有一个输入的方法:raw_input(),它把所有的输入都直接当作一串字符,于是就可以不用加引号,)

先从简单的开始,如果你想把两段字符连起来输出str1 = 'good'str2 = 'bye'
你可以print str1 + str2或者还可以把字符变量一个字符串相加print 'very' + str1print str1 + ' and ' + str2
但如果你想要把一个数字加到文字后面输出,比如这样num = 18print 'My age is' + num程序就会报错。因为字符和数字不能直接用+相加
一种解决方法是,用str()把数字转换成字符串print 'My age is' + str(18)num = 18print 'My age is' + str(num)
还有一种方法,就是用[b]%对字符串进行格式化[/b]num = 18print 'My age is %d' % num输出的时候,%d会被%后面的值替换。输出My age is 18
这里,%d只能用来替换整数。如果你想格式化的数值是小数,要用%fprint ‘Price is %f’ % 4.99输出Price is 4.990000
如果你想保留两位小数,需要在f前面加上条件:[b]%.2f[/b]print ‘Price is %.2f’ % 4.99输出Price is 4.99
另外,可以用[b]%s来替换一段字符串[/b]name = 'Crossin'print '%s is a good teacher.' % name 变量输出Crossin is a good teacher.
或者print 'Today is %s.' % 'Friday' 一段字符
输出Today is Friday.
注意区分:有引号的表示一段字符,没有引号的就是一个变量,这个变量可能是字符,也可能是数字,但一定要和%所表示的格式相一致。

之前我们说到,可以用%来构造一个字符串,比如print '%s is easy to learn' % 'Python'
有时候,仅仅代入一个值不能满足我们构造字符串的需要。假设你现在有一组学生成绩的数据,你要输出这些数据。在一行中,既要输出学生的姓名,又要输出他的成绩。例如Mike‘s score is 87.
Lily‘s score is 95.

在python中,你可以这样实现:print "%s's score is %d" % ('Mike', 87)
或者
name = ‘Lily’
score = 95
print "%s's score is %d" % (name, score)

无论你有多少个值需要代入字符串中进行格式化,只需要在字符串中的合适位置用对应格式的%表示,然后在后面的括号中按顺序提供代入的值就可以了。占位的%和括号中的值在数量上必须相等,类型也要匹配
('Mike', 87)这种用()表示的一组数据在python中被称为元组(tuple)

print ‘Hello’+1print ‘hello%d’ % '123'
程序运行时会报错。因为第一句里,字符串和整数不能相加;第二句里,%d需要的是一个整数,而'123'是字符串。
这种情况下,python提供了一些方法对数值进行类型转换:
int(x) #把x转换成整数float(x) #把x转换成浮点数str(x) #把x转换成字符串bool(x) #把x转换成bool值
上述两个例子就可以写成:
print ‘Hello’+str(1)print ‘hello%d’ % int('123')
以下等式的结果均为真:
int('123') == 123float('3.3') == 3.3str(111) == '111'bool(0) == False
并不是所有的值都能做类型转换,比如int('abc')同样会报错,python没办法把它转成一个整数。
另外关于bool类型的转换,我们会专门再详细说明。大家可以先试试以下结果的值,自己摸索一下转换成bool类型的规律:
bool(-123)bool(0)bool('abc')bool('False')bool('') bool('False')

print一下结果,会发现是True。这是什么原因?因为在python中,以下数值会被认为是False: 为0的数字,包括0,0.0 空字符串,包括'',""
表示空值的None
空集合,包括(),[],{}其他的值都认为是True。
None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样所以,‘False’是一个不为空的字符串,当被转换成bool类型之后,就得到True。同样bool(' ')的结果是True,一个空格也不能算作空字符串。bool('')才是False。
在if、while等条件判断语句里,判断条件会自动进行一次bool的转换。比如 a = '123'
if a:
print 'this is not a blank string'

这在编程中是很常见的一种写法。效果等同于if bool(a)或者if a != ''

除了指定位置进行索引外,list还可以处理负数的索引。继续用昨天的例子:
l = [365, 'everyday', 0.618, True]
l[-1]表示l中的最后一个元素。l[-3]表示倒数第3个元素。
切片操作符是在[]内提供一对可选数字,用:分割。冒号前的数表示切片的开始位置,冒号后的数字表示切片到哪里结束。同样,计数从0开始
注意,开始位置包含在切片中,而结束位置不包括
l[1:3]
得到的结果是['everyday', 0.618]。
如果不指定第一个数,切片就从列表第一个元素开始。如果不指定第二个数,就一直到最后一个元素结束。都不指定,则返回整个列表的一个拷贝。
l[:3]l[1:]l[:]
同索引一样,切片中的数字也可以使用负数。比如:
l[1:-1]
得到['everyday', 0.618]

sentence = 'I am an Englist sentence'
这时就需要对字符串进行分割。
sentence.split()
split()会把字符串按照其中的空格进行分割,分割后的每一段都是一个新的字符串,最终返回这些字符串组成一个list。于是得到
['I', 'am', 'an', 'Englist', 'sentence']
原来字符串中的空格不再存在。
除了空格外,split()同时也会按照换行符\n,制表符\t进行分割。所以应该说,
split默认是按照空白字符进行分割。
之所以说默认,是因为split还可以指定分割的符号。比如你有一个很长的字符串
section = 'Hi. I am the one. Bye.'
通过指定分割符号为'.',可以把每句话分开
section.split('.')
得到
['Hi', ' I am the one', ' Bye', '']
这时候,'.'作为分割符被去掉了,而空格仍然保留在它的位置上。
注意最后那个空字符串。每个'.'都会被作为分割符,即使它的后面没有其他字符,也会有一个空串被分割出来。例如
'aaa'.split('a')
将会得到['', '', '', ''],由四个空串组成的list。

split是把一个字符串分割成很多字符串组成的list,而join则是把一个list中的所有字符串连接成一个字符串。
join的格式有些奇怪,它不是list的方法,而是字符串的方法。首先你需要有一个字符串作为list中所有元素的连接符,然后再调用这个连接符的join方法,join的参数是被连接的list:
s = ';'li = ['apple', 'pear', 'orange']fruit = s.join(li)print fruit
得到结果'apple;pear;orange'。从结果可以看到,分号把list中的几个字符串都连接了起来。
你也可以直接在shell中输入:
';'.join(['apple', 'pear', 'orange'])
得到同样的结果。
用来连接的字符串可以是多个字符,也可以是一个空串:
''.join(['hello', 'world'])
得到'helloworld',字符串被无缝连接在一起。

1. 遍历通过for...in可以遍历字符串中的每一个字符。word = 'helloworld'for c in word: print c
2. 索引访问通过[]加索引的方式,访问字符串中的某个字符。print word[0]print word[-2]
与list不同的是,字符串能不通过索引访问去更改其中的字符。word[1] = 'a'这样的赋值是错误的。
3. 切片通过两个参数,截取一段子串,具体规则和list相同。print word[5:7]print word[:-5]print word[:]
4. 连接字符join方法也可以对字符串使用,作用就是用连接符把字符串中的每个字符重新连接成一个新字符串。newword = ','.join(word)

打开一个文件的命令很简单:
file('文件名')
这里的文件名可以用文件的完整路径,也可以是相对路径。因为我们把要读取的文件和代码放在了同一个文件夹下,所以只需要写它的文件名就够了。
f = file('data.txt')
但这一步只是打开了一个文件,并没有得到其中的内容。变量f保存了这个文件,还需要去读取它的内容。你可以通过read()函数把文件内所有内容读进一个字符串中
data = f.read()
做完对文件的操作之后,记得用close()关闭文件,释放资源

f = file('data.txt') 打开data = f.read() 读取print data 输出f.close()

读取文件内容的方法还有
readline() #读取一行内容
readlines() #把内容按行读取至一个list中

但python默认是以只读模式打开文件。如果想要写入内容,在打开文件的时候需要指定打开模式为写入:
f = file('output.txt', 'w')
'w'就是writing,以这种模式打开文件,原来文件中的内容会被你新写入的内容覆盖掉,如果文件不存在,会自动创建文件。不加参数时,file为你默认为'r',reading,只读模式,文件必须存在,否则引发异常。另外还有一种模式是'a',appending。它也是一种写入模式,但你写入的内容不会覆盖之前的内容,而是添加到文件中。
打开文件还有一种方法,就是open(),用法和file()是一致的。
写入内容的方法同样简单:
f.write('a string you want to write')
write的参数可以是一个字符串,或者一个字符串变量。
示例程序:
data = 'I will be in a file.\nSo cool!'out = open('output.txt', 'w')out.write(data)out.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python基础知识