代码书写规范"/>
python代码书写规范
对于:
先说错误:
不过在具体解释之前,先针对其错误,给出自己的判断:
估计其输入代码时,最后一个括号是中文的括号,所以报错:
而之所以没说是%b引起的问题,是因为我自己调试了同样的代码后,知道如果是%b的话,会是另外不同错误提示:ValueError: unsupported format character 'b' (0x62) at index 9
而不会是这里的:SyntaxError: invalid character in identifier
解决办法:
把最后一个中文括号,改为正常的英文括号即可。
即:weight))
而不是:weight))
后记:
后来也故意去把正确的代码,改为错误的,最后用了个中文的括号,所以也会报错的:
且没有运行之前,pylint就可以识别和检测出来,并提醒错误:unexpected token ‘)’Python(parser-16)
以及:运行后也会报错:
File "/Users/limao/dev/crifan/python/wrongExample/wrongExample.py", line 26
print("我叫%s,我今年%d岁,我的体重是%.2f公斤"%(name,age,weight))
^
SyntaxError: invalid character in identifier
-》完美的验证了我第一次的推断,就是中文括号的问题。
这方面的问题的详细解释,参见:
接着再去说:
看到代码中,很多错误的写法。
且感觉是,被别人故意设计成这样的
对于代码本身,去整理和解释如下:
然后去调试了代码:# Function:
# 演示错误的代码,应该如何改为正确的代码
# Qpython3-CSDN论坛
#
# Author: Crifan Li
# Update: 20200225
age=3
name=("tom")
weight=55
print("我叫%s,我今年%b岁,我的体重是%.2f公斤"%(name,age,weight))
运行(肯定)会报错:
所以,应该改为:# Function:
# 演示错误的代码,应该如何改为正确的代码
# Qpython3-CSDN论坛
#
# Author: Crifan Li
# Update: 20200225
age=3
# name=("tom")
# weight=55
# print("我叫%s,我今年%b岁,我的体重是%.2f公斤"%(name,age,weight))
# ValueError: unsupported format character 'b' (0x62) at index 9
name="tom" # 显示指明是str字符串,而不是 看起来像是tuple元祖,实际上不是
weight=55.0 # 显示指明是float浮点数
# %d 用于格式化 integer整数
print("我叫%s,我今年%d岁,我的体重是%.2f公斤"%(name,age,weight))
# 我叫tom,我今年3岁,我的体重是55.00公斤
其中:
1.不要假装是tuple,但实际却是strname=("tom")
是错误的示范和写法
因为(xxx, yyy)是标准的tuple元祖的写法
上述写法,容易让人误导,以为name是个tuple元祖变量
但是实际上,却等价于name="tom"
name实际上是个str字符串变量
所以,本身,就应该改为,正常的,标准的写法:name="tom"
才对。
加上type变量类型的打印,就容易对比看出区别了:name=("tom")
print("type(name)=%s" % type(name)) # type(name)=<class 'str’>
normlTupleValue = ("tom", "tony")
print("type(normlTupleValue)=%s" % type(normlTupleValue)) # type(normlTupleValue)=<class 'tuple'>
2.不要故意用错误的格式化写法
%d是用来格式化显示数字的
%b,是没见过的写法
即,此处的age是3岁,3个是integer整型数字,应该用%d去格式化输出,而不应该是%b
以及:weight=55
本意是:身体体重是55公斤
然后往往是个float浮点数,即有小数的部分的
所以后续是去用浮点数的%.2f去格式化显示的
但是此处初始化时的写法却是weight=55
此时,weight是int= integer=整型
而不是我们希望的:
float=浮点数
应该改为:weight=55.0
才对。
加上type变量类型的打印,就容易看出区别来了:weight=55
print("type(weight)=%s" % type(weight)) # type(weight)=<class 'int’>
weight=55.0 # 显示指明是float浮点数
print("type(weight)=%s" % type(weight)) # type(weight)=<class 'float'>
最终完整代码是:# Function:
# 演示错误的代码,应该如何改为正确的代码
# Qpython3-CSDN论坛
#
# Author: Crifan Li
# Update: 20200225
age=3
# name=(“tom”) # 看起来像是tuple元祖,实际上不是
# print(“type(name)=%s” % type(name)) # type(name)=
# normlTupleValue = (“tom”, “tony”)
# print(“type(normlTupleValue)=%s” % type(normlTupleValue)) # type(normlTupleValue)=
name=”tom” # 显示指明是str字符串
# weight=55
# print(“type(weight)=%s” % type(weight)) # type(weight)=
weight=55.0 # 显示指明是float浮点数
# print(“type(weight)=%s” % type(weight)) # type(weight)=
# print(“我叫%s,我今年%b岁,我的体重是%.2f公斤”%(name,age,weight))
# ValueError: unsupported format character ‘b’ (0x62) at index 9
# %d 用于格式化 integer整数
print(“我叫%s,我今年%d岁,我的体重是%.2f公斤”%(name,age,weight))
# 我叫tom,我今年3岁,我的体重是55.00公斤
调试输出效果:
附录:
1.关于print中变量的格式化的语法转换符含义注释
‘d’有符号十进制整数。
‘i’有符号十进制整数。
‘o’有符号八进制数。(1)
‘u’过时类型 — 等价于‘d’。(6)
‘x’有符号十六进制数(小写)。(2)
‘X’有符号十六进制数(大写)。(2)
‘e’浮点指数格式(小写)。(3)
‘E’浮点指数格式(大写)。(3)
‘f’浮点十进制格式。(3)
‘F’浮点十进制格式。(3)
‘g’浮点格式。 如果指数小于 -4 或不小于精度则使用小写指数格式,否则使用十进制格式。(4)
‘G’浮点格式。 如果指数小于 -4 或不小于精度则使用大写指数格式,否则使用十进制格式。(4)
‘c’单个字符(接受整数或单个字符的字符串)。
‘r’字符串(使用repr()转换任何 Python 对象)。(5)
‘s’字符串(使用str()转换任何 Python 对象)。(5)
‘a’字符串(使用ascii()转换任何 Python 对象)。(5)
‘%’不转换参数,在结果中输出一个‘%’字符。
python字符串格式化符号:符 号描述
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址
格式化操作符辅助指令:符号功能
*定义宽度或者小数点精度
–用做左对齐
+在正数前面显示加号( + )
在正数前面显示空格
#在八进制数前面显示零(‘0′),在十六进制前面显示’0x’或者’0X'(取决于用的是’x’还是’X’)
0显示的数字前面填充’0’而不是默认的空格
%‘%%’输出一个单一的’%’
(var)映射变量(字典参数)
m.n.m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
更多推荐
python代码书写规范
发布评论