python print如何在输出中插入变量
知乎上遇到这样一个题目:对于新垣结衣 2020 年收入 4.4 亿日元大家怎么看?然后想着写程序输出在中国的价位,然后就会一目了然了。首先要查一下中日汇率。1日元和爽和人民币的换算过程最开始的版本是这样的,连变量都不用插入:# 1日元 ≈ 0.0591人民币# 1人民币=16.9322日元moneyJapan = 440000000moneyChina =moneyJapan/16.9322mon
知乎上遇到这样一个题目:对于新垣结衣 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/
更多推荐
所有评论(0)