ACM集训 --格式化输出
- Python 字符串的格式化输出
1.进制转换
%o —— oct 八进制
%d —— dec 十进制
%x —— hex 十六进制
代码
s="十进制:%d"%(123)
s="八进制:%o"%(123)
s="十六进制:%x"%(123)
运行结果
2. 浮点数输出
%f ——保留小数点后面六位有效数字
%.f ——保留整数部分
%.3f,保留3位小数位
%e ——保留小数点后面六位有效数字,指数形式输出
%.3e,保留3位小数位,使用科学计数法
%g在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
%.3g,保留3位有效数字,使用小数或科学计数法
代码
print('%.f'%121.11)
print('%.3f'%121.11)
print('%e'%121.11)
print('%.3e'%121.11)
print('%g'%121.11)
print('%.3g'%121.11)
运行结果
3. 内置round()
传入2个参数值时rount(a,b),
a–这是一个数字表达式
b–表示从小数点到最后四舍五入的位数。默认值为0
round()函数只有一个参数,不指定位数的时候,返回一个整数,而且是最靠近的整数,类似于四舍五入,当指定取舍的小数点位数的时候,一般情况也是使用四舍五入的规则,但是碰到.5的情况时,如果要取舍的位数前的小数是奇数,则直接舍弃,如果是偶数则向上取舍。
代码
a=1.23
a=round(a)
a=1.2311
a=round(a,3)
a=1.5
a=round(a)
a=4.5
a=round(a)
运行结果
4.内置format()
相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’
位置匹配
(1)不带编号,即“{}”
(2)带数字编号,可调换顺序,即“{1}”、“{2}”
(3)带关键字,即“{a}”、“{tom}”
代码
print('我是{}'.format('ACM队员'))
print('我是{0},{1}'.format('ACM','队员'))
print('{a} {tom} {a}'.format(tom='ACM',a='我来了'))
运行结果
5.对齐操作
%10s——右对齐,占位符10位
%-10s——左对齐,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符,截取两位字符串
< (默认)左对齐、> 右对齐、^ 中间对齐、= (只用于数字)在小数点后进行补齐
- C++字符串的格式化输出
-
printf()函数
类似于%d这样的符号叫做转换说明,他们指定了如何把数据转换成可显示的形式
-
对齐操作
代码
#include <stdio.h>
#define PAGES 931
int main (void)
{
printf("*%d*\n",PAGES);
printf("*%2d*\n",PAGES);
printf("*%10d*\n",PAGES);
printf("*%-10d*\n",PAGES);
return 0;
}
运行结果
*931*
*931*
* 931*
*931 *
- 保留小数点操作
#include <stdio.h>
int main (void)
{
const double RENT=3852.99;
printf("*%f*\n",RENT);
printf("*%e*\n",RENT);
printf("*%4.2f*\n",RENT);
printf("*%3.1f*\n",RENT);
printf("*%10.3f*\n",RENT);
printf("*%10.3e*\n",RENT);
printf("*%+4.2f*\n",RENT);
printf("*%000.2f*\n",RENT);
return 0;
}
运行结果
*3852.990000*
*3.85299e+03*
*3852.99*
*3853.0*
* 3852.990*
* 3.863e+03*
*+3852.99*
*0003852.99*
待续
2021,10,6