python代码书写规范_【提醒】Python新手开发人员注意事项:不要故意用错误的写法而应该用正确标准的写法...

对于:

先说错误:

不过在具体解释之前,先针对其错误,给出自己的判断:

4dabe582132990a9a8b6d512bcf92d4b.png

估计其输入代码时,最后一个括号是中文的括号,所以报错:

30e4d4f84201e82167596631ca10ab68.png

而之所以没说是%b引起的问题,是因为我自己调试了同样的代码后,知道如果是%b的话,会是另外不同错误提示:ValueError: unsupported format character 'b' (0x62) at index 9

而不会是这里的:SyntaxError: invalid character in identifier

解决办法:

把最后一个中文括号,改为正常的英文括号即可。

即:weight))

而不是:weight))

后记:

后来也故意去把正确的代码,改为错误的,最后用了个中文的括号,所以也会报错的:

343da58db987b56348e84c1bdc366a36.png

且没有运行之前,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

-》完美的验证了我第一次的推断,就是中文括号的问题。

这方面的问题的详细解释,参见:

接着再去说:

看到代码中,很多错误的写法。

且感觉是,被别人故意设计成这样的

对于代码本身,去整理和解释如下:

4dabe582132990a9a8b6d512bcf92d4b.png

然后去调试了代码:# Function:

#   演示错误的代码,应该如何改为正确的代码

#   Qpython3-CSDN论坛

#   https://bbs.csdn.net/topics/395926666

# Author: Crifan Li

# Update: 20200225

age=3

name=("tom")

weight=55

print("我叫%s,我今年%b岁,我的体重是%.2f公斤"%(name,age,weight))

运行(肯定)会报错:

c99aa6cff5221799a3f9b087dcfee797.png

所以,应该改为:# Function:

#   演示错误的代码,应该如何改为正确的代码

#   Qpython3-CSDN论坛

#   https://bbs.csdn.net/topics/395926666

# 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论坛

#   https://bbs.csdn.net/topics/395926666

# 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公斤

调试输出效果:

454397d9b08f889e08194d33d6db9f02.png

附录:

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)

‘%’不转换参数,在结果中输出一个‘%’字符。

ed0cfbf24b63843703671a22baf01ed3.png

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 是小数点后的位数(如果可用的话)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值