print,中文意思是打印,在python里它不是往纸上打印,而是打印在命令行,或者叫终端、控制台里面。print是python里很基本很常见的一个操作,它的操作对象是一个字符串(什么是字符串,此处按住不表,且待日后慢慢道来)。基本格式是:
print 你要打印的东西
或者
print(你要打印的东西)
这里一定要英文字符的括号,所有程序中出现的符号都必须是英文字符,注意别被你的输入法坑了。
注意:如果你是python3及以后的版本,一定得用print(),不然会出错。
各位同学可以在自己的python环境中试着输出以下内容:
>>> print "hello"
hello
>>> print('world')
world
>>> print 1
1
>>> print(3.14)
3.14
>>> print 3e30
3e+30
>>> print 1 + 2 * 3
7
>>> print(2 > 5)
False
python3记得在后面必须加上()
直接在print后面加一段文字来输出的话,需要给文字加上双引号或者单引号。大家发现,print除了打印文字之外,还能输出各种数字、运算结果、比较结果等。你们试着自己print一些别的东西,看看哪些能成功,哪些会失败,有兴趣的话再猜一猜失败的原因。
其实在python命令行下,print是可以省略的,默认就会输出每一次命令的结果。就像这样:
>>> 'Your YiDa!'
'Your YiDa!'
>>> 2+13+250
265
>>> 5<50
True
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' + str1
print str1 + ' and ' + str2
但如果你想要把一个数字加到文字后面输出,比如这样
num = 18
print 'My age is' + num
程序就会报错。因为字符和数字不能直接用+相加。
一种解决方法是,用str()把数字转换成字符串
print 'My age is' + str(18)
或
num = 18
print 'My age is' + str(num)
还有一种方法,就是用%对字符串进行格式化
num = 18
print 'My age is %d' % num
输出的时候,%d会被%后面的值替换。输出
My age is 18
这里,%d只能用来替换整数。如果你想格式化的数值是小数,要用%f
print ‘Price is %f’ % 4.99
输出
Price is 4.990000
如果你想保留两位小数,需要在f前面加上条件:%.2f
print ‘Price is %.2f’ % 4.99
输出
Price is 4.99
另外,可以用%s来替换一段字符串
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’+1
print ‘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') == 123
float('3.3') == 3.3
str(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 != ''