我试图用python制作一个简单的程序,我想以简单的表格格式显示我的输出。但每一次排列都会受到干扰。约束是不使用Python的format()
。
我试图使用python中的字符串格式打印所需的输出。但我无法获得所需的输出。请帮帮我。
我试过这样做:
def footToMeter(foot):
Meter = 0.305 * foot
return Meter
def meterToFoot(meter):
Foot = meter / 0.305
return Foot
i = 1.0
j = 20.0
header = ('Feet','Meters | ','Meters','Feet')
print("%-14s%-15s%-15s%-15s" % header)
while i<=15:
print("%s" % i ,"%15.3f" % footToMeter(i)," | ",j,"%16.3f" %
meterToFoot(j))
i = i + 1
j = j + 6
实际输出应该是完全左对齐的表格格式(请在输出下面检查)。但是我的输出的排列受到了轻微的干扰。
发布于 2019-06-16 22:49:59
你可以用F-字符串。它们可从Python3.6开始使用。
如图所示
i = 1.0
j = 20.0
header = ('Feet','Meters')
print (f"{header[0]:<10}{header[1]:<10s} | {header[1]:<10s}{header[0]:<10s}\n")
while i<=15:
print(f"{i:<10.1f}{footToMeter(i):<10.3f} | {j:<10.1f}{meterToFoot(j):<10.3f}")
i = i + 1
j = j + 6
以获得类似的输出
Feet Meters | Meters Feet
1.0 0.305 | 20.0 65.574
2.0 0.610 | 26.0 85.246
3.0 0.915 | 32.0 104.918
4.0 1.220 | 38.0 124.590
5.0 1.525 | 44.0 144.262
6.0 1.830 | 50.0 163.934
7.0 2.135 | 56.0 183.607
8.0 2.440 | 62.0 203.279
9.0 2.745 | 68.0 222.951
10.0 3.050 | 74.0 242.623
11.0 3.355 | 80.0 262.295
12.0 3.660 | 86.0 281.967
13.0 3.965 | 92.0 301.639
14.0 4.270 | 98.0 321.311
15.0 4.575 | 104.0 340.984
<
用于左对齐。
对header
元组和字段宽度进行了修改。
您也可能对佩普感兴趣。
发布于 2019-06-16 22:13:12
您可以使用选项卡\t
并使用空格和格式化字符串来正确显示,其中一个例子是
def footToMeter(foot):
return 0.305 * foot
def meterToFoot(meter):
return meter / 0.305
i = 1.0
j = 20.0
#Replaced spaces with a mix of tabs and spaces
print('Feet\t\t Meters\t\t|\t\t Meters\t\tFeet')
print()
while i<=15:
#Played around with format strings
print("%-4.1f\t\t" % i ,"%-.3f" % footToMeter(i),"\t\t|\t\t",j,"\t\t%-7.3f" %meterToFoot(j))
i = i + 1
j = j + 6
这个给我桌子
Feet Meters | Meters Feet
1.0 0.305 | 20.0 65.574
2.0 0.610 | 26.0 85.246
3.0 0.915 | 32.0 104.918
4.0 1.220 | 38.0 124.590
5.0 1.525 | 44.0 144.262
6.0 1.830 | 50.0 163.934
7.0 2.135 | 56.0 183.607
8.0 2.440 | 62.0 203.279
9.0 2.745 | 68.0 222.951
10.0 3.050 | 74.0 242.623
11.0 3.355 | 80.0 262.295
12.0 3.660 | 86.0 281.967
13.0 3.965 | 92.0 301.639
14.0 4.270 | 98.0 321.311
15.0 4.575 | 104.0 340.984
发布于 2019-06-17 04:07:19
对代码的最小更改将是
old: print( "%s" % i ,"%15.3f" % footToMeter(i)," | ", j,"%16.3f" % meterToFoot(j))
new: print("%4d" % i ,"%15.3f" % footToMeter(i)," |","%9d" % j,"%12.3f" % meterToFoot(j))
所以关键是对所有的东西都有一个固定的宽度(i
和j
在最初的时候没有一个),然后它只是一个数字的游戏(%15.3f
甚至没有改变)。
结果如下:
米1 0.305 x20 65.574 2 0.610 26 85.246 3 0.915 32 104.918 4 1.220 x38 124.590 5 1.52544 144.262 6 1.830 x 50 163.934 7 2.135 x 56 183.607 8 2.440 62 203.279 9 2.745 68 222.951 10 3.050 74 242.623 113.355 - 80,262.295 12,3.660,86,281.967,13,3.965,92,301.639,14,4.270,98,321.311,15 4.575 - 104 - 340.984
您可以在这里看到它的作用:https://ideone.com/9UKuw1
同样的方法也可以用于左对齐:
old: print( "%s" % i ,"%15.3f" % footToMeter(i)," | ", j, "%16.3f" % meterToFoot(j))
new: print("%-13d" % i ,"%-9.3f" % footToMeter(i),"| ","%-14d" % j,"%-12.3f" % meterToFoot(j))
虽然我认为(左对齐)的结果很难看:
米1 0.305英尺20 65.574 2 0.610 x 26 85.246 3 0.915 32 104.918 4 1.220 - 38124.590 5 1.525 x 44 144.262 6 1.830 x 50 163.934 7 2.135 x 56 183.607 8 2.440 x 62 203.279 9 2.745\x{e76f} 68 222.951 10 3.050 74 242.623 11 3.355 x 80 262.295 12 3.660 86 281.967 13 3.965 x 92 301.639 144.270 / 98 98 15 4.575 104 340.984
或者在https://ideone.com/RatzqW看到它的动作
https://stackoverflow.com/questions/56625484
复制相似问题