![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=1734477586-rPncQolPvnWxDVzOI8yMGwv4LcDnSaDl-0-3b8dc76b2977a04b8791d86710625fae)
Python会忽略注释,我们可以用注释对程序进行说明。“#”标志之后的所有文本都是注释。
程序员在测试代码时,会在一行代码前加上“#”,临时删除它。在我们想弄清楚为什么程序不工作时,这样做可能有用。如果准备还原代码,去掉“#”即可。
Python也会忽略注释之后的空行。在程序中,想加入空行时就可以加入,这会使代码更容易阅读,就像书中的段落一样。
2. print()
print()将括号内的字符串显示在屏幕上。如:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-030-3.jpg?sign=1734477586-eM3L49Hy63Cbdy4LRAeePnVX99AHfkB6-0-ec24cf3b41dfb794bc886304c70be384)
代码行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=1734477586-5pJ6Yunh9nXXDxZCbmcgCTa249FO1N6w-0-261c5ee173fa76f3addd54828611f8fe)
这个函数的值为一个字符串,即用户输入的文本。前面的代码行将这个字符串赋给变量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=1734477586-ukR8IMEEasvveV6SEfpxjjMxVGsaoQUd-0-9df8f965034ac877ef28889067e4651b)
需要记住,表达式总是可以求值的。如果值'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=1734477586-JGVGERdomnsQPVekxwUA6GDRBl7lADMJ-0-d117db12e2f27eda21046d9006214a0d)
在交互式环境中输入以下内容。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-4.jpg?sign=1734477586-4KAuNMQh8VTFudPGZv5FG5GmbsWTxI2m-0-6e198fd61bc67c5fc5e02967a7456423)
就像这个例子,len(myName)的值为一个整数。然后它被传递给print(),在屏幕上显示。请注意,print()允许传入一个整型值或字符串。但如果在交互式环境中输入以下内容,就会报错。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-5.jpg?sign=1734477586-XVG1Dvh8MRDmjWgPUUmDsQp9mO3YQOqg-0-4de290b5f983180252c04252f8f1d177)
导致错误的原因不在于print(),而在于我们试图传递给print()的表达式。如果在交互式环境中单独输入这个表达式,则会得到同样的错误提示。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-032-1.jpg?sign=1734477586-ylDPptCZMM9dO0Ds3fQ5AXLoUzXwBGno-0-57d8e52470172c68aa729aef6ef5b6a4)
报错是因为,只能用“+”操作符加两个整数,或者连接两个字符串。不能让一个整数和一个字符串相加,这不符合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=1734477586-ZgfxtGEjVOTKlQDFU0AU3ych3K73U4z3-0-516c22c582c877502ef7000c5af790dc)
因为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=1734477586-cPvyXluUwYE1nQSCctqrGxlZ1uSHaLpd-0-d72ed250bcc1b22e36fc8d42be1c1169)
上面的例子调用了str()、int()和float(),向它们传入其他数据类型的值,得到了字符串、整型或浮点型的值。
如果想要将一个整数或浮点数与一个字符串连接起来,那么使用str()就很方便。如果有一些字符串值将用于数学运算,则int()也很有用。例如,input()总是返回一个字符串,即使用户输入的是一个数字。在交互式环境中输入sp=input(),并输入文本99。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-1.jpg?sign=1734477586-SbbxJgKzZv1gxET8hWwMirVHfBQaZSCx-0-1def9549bc345069d2d2efe3d4a3615d)
保存在sp中的值不是整数99,而是字符串'99'。如果想要用sp中的值进行数学运算,就用int()取得sp的整数形式,然后将这个新值存在sp中。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-2.jpg?sign=1734477586-ElgQOGaHQ5hCRzi55I7v9DC1bJV5IXsD-0-19e7da1a7f6708ed015899b36e6f824c)
现在就能将sp变量作为整数,而不是字符串使用了。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-3.jpg?sign=1734477586-6TS6PhyhyPwKMzerIKYBLRW4h8QJmsux-0-edfdd8a5a319aa6fb4bf18658a67e8eb)
注意,如果我们将一个不能求值为整数的值传递给int(),则Python将显示出错信息:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-4.jpg?sign=1734477586-kRMrXKwZYXThuEuad1N5jnLeJUT1X3RB-0-2ef11ea2959b8efbd4a619055f6431ad)
如果需要对浮点数进行取整运算,也可以用int()。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-5.jpg?sign=1734477586-NRAX0N9HOp4t3yEGpJwi2jctxvJMqCpw-0-a108471ad9992e211f9abd4aaa484c8e)
在如图1-15所示的Python程序中,使用了int()和str(),以取得适当数据类型的值。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-6.jpg?sign=1734477586-ARNLKlko1a23bvYWm0zth0POUAzpmz3y-0-4bbbe99c5d59d9bd86af304f17f4e2e7)
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.'连接,创建最终的消息了。