教女朋友学 python——加减数学竖式
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:45
女朋友的编程作业,适合零基础的同学。
题目
思路
运算是简单的数学竖式,计算并没有困难,题目考察点在于python的格式化输出。
python中的格式化输出主要使用format方法。
实现代码(固定长度)
print('请输入两个整数:') ## 输出
a = int(input()) ## 输入
b = int(input()) ## 输入
while(1):
print('请输入两个整数的运算方式(+或-):') ## 输出
y = input() ## 输入
if y=='+':
c = a+b
else:
c = a-b
break
print('{:>10}'.format(a))#固定长度是10
print('{:<}'.format(y),'{:>8}'.format(b))
print('{:->11s}'.format(''))
print('{:>10}'.format(c))
format 用法
格式化字符串的函数 str.format()
,str
是要出的字符串,format
函数可以将str
中指定的{}
部分替换成我们指定的内容。
基本使用示例如下(更多使用方式可参考菜鸟教程):
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
本题中会用到format
函数中的对齐功能:
{:>10d}
表示 右对齐 (默认, 宽度为10,空格补齐)
其中
:
后面接对齐格式
>
表示右对齐
10
表示对齐的长度
d
表示十进制数字
相同长度的-
补齐
{:->11s}
中符号:后接-表示使用-填充(没有接其他符号表示用空格补齐),s
表示字符串
(更多使用方式可参考菜鸟教程)
动态对齐长度
上述直接使用format
函数格式化对齐的方式只能设定固定的对齐长度10,就是无论数字是几位,最终都对齐为左边开始向右数第十位。如果数字很大超过十位,则会报错。如果开始就把对齐的固定长度设置很大则表达式很不美观。
则需要修改对齐方式,使得对齐的长度随着输入数字的长度动态调整。
这里用到了python的另一种格式化方式%
。
思路
对齐需要使用format
中的动态补齐,上面格式化代码'{:>10}'
中10
的部分只能是数字,不能加变量,所以考虑在格式化代码中套用格式化功能,将'{:>10}'
再次格式化用变量代替10
。
动态长度实现代码
print('请输入两个整数:') ## 输出
a = int(input()) ## 输入
b = int(input()) ## 输入
while(1):
print('请输入两个整数的运算方式(+或-):') ## 输出
y = input() ## 输入
if y=='+':
c = a+b
else:
c = a-b
break
l=max(len(str(a)),len(str(b)))+5#l为我们指定的动态长度,这里是比最长输入数字的长度长5个字符
print(('{:>%s}'%(l)).format(a))
print(y+('{:>%s}'%(l-1)).format(b))
print(('{:->%s}'%(l)).format(''))
print(('{:>%s}'%(l)).format(c))
套用%讲解
%
用法与format
类似(这里也可以直接用format代替)
>>>"hello%s"%("world")
'hello world'
当l=10
时,上方代码中'{:>%s}'%(l)
相当于'{:>10}
,这时再用format函数就与第一个代码相同了