![Python人工智能](https://wfqqreader-1252317822.image.myqcloud.com/cover/801/40107801/b_40107801.jpg)
1.4 剖析程序
新程序在文本编辑器中打开后,逐一查看每行代码,看看它都用到了哪些Python代码。
1. 注释
下面这行称为“注释”:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-030-2.jpg?sign=1739218820-nUlLHb56dxIRgyjfvQPVGkjw61xbZzB9-0-005d36333ef60bbcbb60ed776ba6e47d)
Python会忽略注释,我们可以用注释对程序进行说明。“#”标志之后的所有文本都是注释。
程序员在测试代码时,会在一行代码前加上“#”,临时删除它。在我们想弄清楚为什么程序不工作时,这样做可能有用。如果准备还原代码,去掉“#”即可。
Python也会忽略注释之后的空行。在程序中,想加入空行时就可以加入,这会使代码更容易阅读,就像书中的段落一样。
2. print()
print()将括号内的字符串显示在屏幕上。如:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-030-3.jpg?sign=1739218820-Sc3o5TgkbRPnQhjhHDswPzEkZpaDM2JZ-0-c01dfd957facf238d2f89193b78984e8)
代码行print('Hello world!')表示打印出字符串“Hello world!”的文本。Python执行到此处时,会调用print(),并将字符串“传递”给函数。传递给函数的值称为“参数”。需要注意,引号没有打印到屏幕上。它们只用来表示字符串的起止,不是字符串的一部分。
也可以用这个函数在屏幕上打印出空行,只要调用print()就可以了,括号内没有任何内容。
在输入函数时,末尾的左右括号表明它是一个函数。这就是为什么在本书中会看到print(),而不是print。
3. input()
input()等待用户在键盘上输入一些文本,并按下“Enter”键。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-1.jpg?sign=1739218820-l7tdquH9swMl7l9pBJ4KxoaB1cM1p1ad-0-29ea08d06eb2f7f11b531cf1f8525ae8)
这个函数的值为一个字符串,即用户输入的文本。前面的代码行将这个字符串赋给变量myName。
我们可以认为input()调用的是一个表达式,它的值为用户输入的任何字符串。
4. 打印用户的名字
调用print(),在括号间包含表达式'It is good to meet you, ' + myName。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-2.jpg?sign=1739218820-r6rZYQzfdoLe2P7onLZ4plVDrvlUpoju-0-3d5500e70d87a9ea016170785829030c)
需要记住,表达式总是可以求值的。如果值'A1'是上一行代码保存在myName中的值,那么这个表达式的值为'It is good to meet you,A1'。这个字符串传给print(),它将输出到屏幕上。
5. len()
我们可以向len()传递一个字符串(或包含字符串的变量),该函数的值为一个整型值,即字符串中字符的个数。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-3.jpg?sign=1739218820-mmFOvX3gM17IC0wPsIbMFEUGZdiB6vSv-0-1cc617ce3302e455ac36176a44d3ded1)
在交互式环境中输入以下内容。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-4.jpg?sign=1739218820-gHVTRIRl8NowTw8NfBcCuoaTFIl8UHYz-0-0e80e65a32cf9d5ac3bd38a58bcaca95)
就像这个例子,len(myName)的值为一个整数。然后它被传递给print(),在屏幕上显示。请注意,print()允许传入一个整型值或字符串。但如果在交互式环境中输入以下内容,就会报错。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-5.jpg?sign=1739218820-mos5sj9wKDm5sl73qIkJK73M23rdbOXj-0-6991144f636c2d916a1fb002c23e4802)
导致错误的原因不在于print(),而在于我们试图传递给print()的表达式。如果在交互式环境中单独输入这个表达式,则会得到同样的错误提示。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-032-1.jpg?sign=1739218820-d1chKo7tgWDjbsVAwYbROFqil1yHnzjm-0-7a596359bf621256f0db2e954413ea31)
报错是因为,只能用“+”操作符加两个整数,或者连接两个字符串。不能让一个整数和一个字符串相加,这不符合Python的语法。可以使用字符串版本的整数,修改这个错误。
6. str()、int()和float()
如果想要连接一个整数(如28)和一个字符串,再传递给print(),就需要获得值'28'。它是28的字符串形式。str()可以传入一个整型值,函数值为它的字符串形式。例如:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-032-2.jpg?sign=1739218820-1FAT2lsz0ETmLvg6RgOjcpcRRMKBSyLk-0-b122fb97bdf7add1660595830f21e481)
因为str(28)的值为'28',所以表达式"I am "+str(28)+" years old."的值为"I am "+'28'+" years old.",它又求值为'I am 28 years old. '。这就是传递给print()的值。
str()、int()和float()将传入值分别转换成字符串、整数和浮点数形式。下面我们尝试用这些函数在交互式环境中转换一些值,看看效果。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-032-3.jpg?sign=1739218820-lYLXbY0SW3zZAgK0t47SK0RdUL5YgTuV-0-78f640fdb30bcb9282836ab548f86ba3)
上面的例子调用了str()、int()和float(),向它们传入其他数据类型的值,得到了字符串、整型或浮点型的值。
如果想要将一个整数或浮点数与一个字符串连接起来,那么使用str()就很方便。如果有一些字符串值将用于数学运算,则int()也很有用。例如,input()总是返回一个字符串,即使用户输入的是一个数字。在交互式环境中输入sp=input(),并输入文本99。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-1.jpg?sign=1739218820-ouxlYXcAjhNR6WAfPAyvnuCba38HK3sN-0-36ae4a4400b2b33fc6a2661a67f28043)
保存在sp中的值不是整数99,而是字符串'99'。如果想要用sp中的值进行数学运算,就用int()取得sp的整数形式,然后将这个新值存在sp中。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-2.jpg?sign=1739218820-I1AdgFVH5Xuuq5ntxrjx9yv8SMeVrI4a-0-915b6d7021e280532bbbcfd0f6650a96)
现在就能将sp变量作为整数,而不是字符串使用了。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-3.jpg?sign=1739218820-xpZi9cJTYNWoG6VXS6e0hpuCytdDd4ho-0-d2b913720e94bec70d4bcdedc9bc83df)
注意,如果我们将一个不能求值为整数的值传递给int(),则Python将显示出错信息:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-4.jpg?sign=1739218820-TNPZK4bolksdDpXke3IN2xCUZs9HoWse-0-357e1aed328825fceec9eace773e387f)
如果需要对浮点数进行取整运算,也可以用int()。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-5.jpg?sign=1739218820-goNTb5Jkxx28YtFnRitP5kkfx97VxkrX-0-b9be99169e1e848a18702c15882c9a07)
在如图1-15所示的Python程序中,使用了int()和str(),以取得适当数据类型的值。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-6.jpg?sign=1739218820-zpAMDncGjFG9beFdfKPiXpiTATCPAuPb-0-3c24ed0aec96adda78d909f868eff730)
myAge变量包含了input()返回的值。因为input()总是返回一个字符串(即使用户输入的是数字),所以我们可以使用int(myAge)返回字符串的整型值。这个整型值随后在表达式int(myAge)+1中与1相加。
相加的结果传递给str():str(int(myAge)+1)。然后,返回的字符串与字符串'You will be'和'in a year.'连接,所得值为一个更长的字符串。这个更长的字符串最终传递给print(),并在屏幕上显示。
假定用户输入字符串'4',保存在myAge中。字符串'4'被转换为一个整型数据,所以我们可以对它加1。结果为5。str()将这个结果转化为字符串,这样我们就可以将它与第二个字符串'in a year.'连接,创建最终的消息了。