知乎上遇到这样一个题目:对于新垣结衣 2020 年收入 4.4 亿日元大家怎么看?

然后想着写程序输出在中国的价位,然后就会一目了然了。

1 日元和爽和人民币的换算过程

最开始的版本是这样的,连变量都不用插入:

# 1日元 ≈ 0.0591人民币
# 1人民币=16.9322日元
moneyJapan = 440000000
moneyChina =moneyJapan/16.9322
moneyShuang = moneyChina/2080000
money30Shuang = moneyShuang/30
money365Shuang = money30Shuang/12

print('4.4亿日元等于X元人民币,X=:',moneyChina)

print('4.4亿日元等于X爽, X=:',moneyShuang)

print('4.4亿日元等于X月爽, X=:',money30Shuang)

print('4.4亿日元等于X年爽, X=:',money365Shuang)

2 X的位置之争

但是观众老爷不满意,说如果能够把数值写在X处就好了。然后就需要在输出中插入变量。修改后的程序如下

# 1日元 ≈ 0.0591人民币
# 1人民币=16.9322日元
moneyJapan = 440000000
moneyChina =moneyJapan/16.9322
moneyShuang = moneyChina/2080000
money30Shuang = moneyShuang/30
money365Shuang = money30Shuang/12


print("4.4亿日元=%s(RMB)" % moneyChina)

print("4.4亿日元=%s(日爽)" % moneyShuang)

print("4.4亿日元=%s(月爽)" % money30Shuang)

print("4.4亿日元=%s(年爽)" % (money365Shuang))

这样结果就满足观众老爷们的要求了。输出处不用X代替就可以了。

3 print你累不累

但是观众老爷又说难道print不嫌累吗,于是决定减少print的次数,改4个print为1个print重写为:

于是写出了这样的程序:

# 1日元 ≈ 0.0591人民币
# 1人民币=16.9322日元
moneyJapan = 440000000
moneyChina =moneyJapan/16.9322
moneyShuang = moneyChina/2080000
money30Shuang = moneyShuang/30
money365Shuang = money30Shuang/12
print("4.4亿日元等于%s(RMB),%s(日爽),%s(月爽),%s(年爽)" % (moneyChina, moneyShuang, money30Shuang, money365Shuang))

结果也显得简单多了:

4 因为代码太长不简洁不美怎么办

既然已经改成这样了,但是我总感觉不够简洁,变量的名字太长了,不好,改为这样:

# 1日元 ≈ 0.0591人民币
# 1人民币=16.9322日元
JP = 440000000
RMB =JP/16.9322
RS = RMB/2080000
YS = RS/30
NS = YS/12
print("4.4亿日元等于%s(RMB),%s(日爽),%s(月爽),%s(年爽)" % (RMB, RS, YS, NS))
#RMB, RS, YS, NS分别为人民币,日爽,月爽, 年爽

一般情况下,使用%d和%s比较多。

而本题目中使用的数字是小数,如果使用的是整数,直接月爽和年爽都变成0了。

另外,我在文章:《如何批量给文件加位数相同且统一的序号——文件的批量命名》中也写到了格式化输出的程序。了解详细内容,可戳下面链接。

https://blog.csdn.net/a1456123a/article/details/116981534

5 关于格式化输出的一些说明:

(1). %字符:标记转换说明符的开始

(2). 转换标志:-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充

(3). 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。

(4). 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出

(5).字符串格式化转换类型


转换类型          含义

d,i                 带符号的十进制整数
o                   不带符号的八进制
u                   不带符号的十进制
x                    不带符号的十六进制(小写)
X                   不带符号的十六进制(大写)
e                   科学计数法表示的浮点数(小写)
E                   科学计数法表示的浮点数(大写)
f,F                 十进制浮点数
g                   如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
G                  如果指数大于-4或者小于精度值则和E相同,其他情况和F相同
C                  单字符(接受整数或者单字符字符串)
r                    字符串(使用repr转换任意python对象)
s                   字符串(使用str转换任意python对象)
————————————————
版权声明:本文为CSDN博主「猪笨是念来过倒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liao392781/article/details/80579004/

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐