初学python 记录一些易错点

1.区分字符串与数值

话说在c语言这个强类型语言中,各变量类型被强制的区分开来,类型转换工作也必须由程序员显式完成,所以c语言的字符串与数值自然能区分的很清楚。

不过在弱类型的语言中,许多麻烦的类型转换操作解释器都会偷偷地帮你完成了。尤其是php,那叫一个方便简单,纯数字组成的字符串能直接与数值相加,实际用起来,我们经常没有注意到纯数字的字符串与数值没有什么区别。

如 

1 <?php
2 $a1="5"+8;
3 $a2=5+"8";
4 $a3=5+8;
5 $a4="5"+"8";
6 //上面四句表达式的值,结果是一样的

因为php的解释器会按照需要自动的转换字符串类型和数值类型。在php中,加号+就是相加,管你是字符串还是数值,并且额外弄了个点号.表示字符串连接。

再看python中,加号放在字符串之间,表示的是字符串连接,放在数值之间,才表示相加。

所以,一个经常犯的错误就出现了,看如下代码:

1 num1=input("请输入第一个数字:")
2 num2=input("请输入第二个数字:")
3 sum=num1+num2
4 print("这两个数之和是:",sum)

 

原因在于input()返回的是一个字符串类型。我们可以在交互窗口试一试:

Type "help", "copyright", "credits" or "license" for more information.
>>> a=input("enter a num")
enter a nume
>>> a=input("enter a num\n")
enter a num
3
>>> a
3
>>>

因此,我们使用input()函数输入后得到的其实是一个包含数字的字符串。

那么使用加号表示将这两个字符串合并,‘3‘和‘2‘合并自然是‘32‘了。

所以,以后如果想使用input()函数输入一个数值,在得到结果后一定要记得使用int()将字符串类型转换为数值类型,否则会出现莫名其妙的问题!

 

2.空格和制表符

试试在一个正常的语句前面加上一个空格?

在其他如c语言中,这么做一点影响都没有。

但是在python中,这么做解释器会报错:IndentationError: unexpected indent

具体细节我也不是很清楚,目前猜测是解释器故意这样干的,目的是强制程序员养成良好的编程习惯,类似于强制缩进这种做法。

 

3.函数默认参数务必使用不可变对象

 

留个坑,以后补充

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。