![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=1739286696-h8eFm1uFxWV7kUa0Bvt17tpZq7qiKHvY-0-b8ea32c9d8bc5f649b39b82bcd15379d)
Python会忽略注释,我们可以用注释对程序进行说明。“#”标志之后的所有文本都是注释。
程序员在测试代码时,会在一行代码前加上“#”,临时删除它。在我们想弄清楚为什么程序不工作时,这样做可能有用。如果准备还原代码,去掉“#”即可。
Python也会忽略注释之后的空行。在程序中,想加入空行时就可以加入,这会使代码更容易阅读,就像书中的段落一样。
2. print()
print()将括号内的字符串显示在屏幕上。如:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-030-3.jpg?sign=1739286696-zOdzp49IvyfeLrs6zWhpDBafqEpQpdOU-0-77cf80b6090002af4e8f53d01e1ec4d4)
代码行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=1739286696-LNVlQ3zmzIQFClHVSZCv6oWeRIk78tXK-0-5f5c92ee8be131f8ba5d294f71b35d45)
这个函数的值为一个字符串,即用户输入的文本。前面的代码行将这个字符串赋给变量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=1739286696-pF0PKHpcl1e3dcUagxWw90dMNCoyAbeE-0-acce11fc8580dd9ffb249dadc3774ee2)
需要记住,表达式总是可以求值的。如果值'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=1739286696-eh567EYeSfplstaOMkDBrTiOqSJdo4Pi-0-2814f961062fa2b588f9b012c2025c4a)
在交互式环境中输入以下内容。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-4.jpg?sign=1739286696-EIZYlG8te0nRVHA0M04kZTjsRiy0qR5b-0-074654c1970a669c8609b06f106ae9c6)
就像这个例子,len(myName)的值为一个整数。然后它被传递给print(),在屏幕上显示。请注意,print()允许传入一个整型值或字符串。但如果在交互式环境中输入以下内容,就会报错。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-031-5.jpg?sign=1739286696-k598PA37YIQJSuXoQ8h6LzwtubzvzkS1-0-353276aa615bf25fc99c14b50675dcc6)
导致错误的原因不在于print(),而在于我们试图传递给print()的表达式。如果在交互式环境中单独输入这个表达式,则会得到同样的错误提示。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-032-1.jpg?sign=1739286696-2xvyj5GbkNfMYZmRcmdHuDxI79lInEws-0-b99f358838ff2c5ad8ff825b36a132a6)
报错是因为,只能用“+”操作符加两个整数,或者连接两个字符串。不能让一个整数和一个字符串相加,这不符合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=1739286696-OB4cQACdtQlxsqUkh71PAVxASL81unhR-0-aca6584e0a6e7c0fe92261fe1f3e416e)
因为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=1739286696-AhBmhp95rEFCMOLA0h57xJ9d2YNMN6zX-0-1930ace1b365b7feebf7a13affd50b45)
上面的例子调用了str()、int()和float(),向它们传入其他数据类型的值,得到了字符串、整型或浮点型的值。
如果想要将一个整数或浮点数与一个字符串连接起来,那么使用str()就很方便。如果有一些字符串值将用于数学运算,则int()也很有用。例如,input()总是返回一个字符串,即使用户输入的是一个数字。在交互式环境中输入sp=input(),并输入文本99。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-1.jpg?sign=1739286696-FwBX2WsvS2d0nyCdaixNwtTrylIQyKLf-0-1d76e5523959b99096289ae044a6553c)
保存在sp中的值不是整数99,而是字符串'99'。如果想要用sp中的值进行数学运算,就用int()取得sp的整数形式,然后将这个新值存在sp中。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-2.jpg?sign=1739286696-zpoJuAPRpWMqeeB5RCJb7UN0mThiXJby-0-95607829a19b129a6e51a78e7a566411)
现在就能将sp变量作为整数,而不是字符串使用了。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-3.jpg?sign=1739286696-HjsqbZvRh6UFBkKB6cyxs7aM6BmU8tMo-0-78d0df8f0cd7df64bf6ce626401af97d)
注意,如果我们将一个不能求值为整数的值传递给int(),则Python将显示出错信息:
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-4.jpg?sign=1739286696-JVuCvMAXr8SfHFZtRONSJAamCT6GMCu0-0-341ed5dd4fba64d9f7cabc3db8c86ff7)
如果需要对浮点数进行取整运算,也可以用int()。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-5.jpg?sign=1739286696-YsHnkJu0ee9SkF0JUiUeNVTdrM3CQVec-0-cc5ccdec869cf7679b61fe252c87ec91)
在如图1-15所示的Python程序中,使用了int()和str(),以取得适当数据类型的值。
![](https://epubservercos.yuewen.com/CBEF87/20862582601479206/epubprivate/OEBPS/Images/41374-00-033-6.jpg?sign=1739286696-1vonkTmikCzIapsXf1Z7MI58pz6gXnYb-0-6af40b34ed4ab9011aac79fa9aef978d)
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.'连接,创建最终的消息了。