我应该编写一个模块,使用Python 3中定义的函数将米转换为英尺到英尺到米。它应该显示如下:
Feet Meters | Meters Feet
1.0 .305 | 20.0 65.574
2.0 .610 | 26.0 81.967
...
9.0 2.745 | 60.0 196.721
10.0 3.050 | 66.0 213.115
我应该使用两个函数:
def footToMeters(foot):
和
def meterToFoot(meter):
我现在的代码是:
foot = 1
meter = 20
def footToMeter(foot):
meters = foot * .305
print("Feet \t Meters")
for foot in range(1,11):
print(foot, "\t", meters)
foot +=1
meters = foot * .305
print()
def meterToFoot(meter):
feet = round((meter/.305),3)
print("Meters \t Feet")
for meter in range(20,69,6):
print(meter, "\t", feet)
meter += 6
feet = round((meter/.305),3)
print(footToMeter(foot))
print(meterToFoot(meter))
显然,最后两个打印语句只是一个接一个地打印这两个函数。
我的问题是如何将这两个功能并排打印?
非常感谢任何帮助!谢谢!
答案 0 :(得分:3)
反转你的代码:函数应该只是输入并返回一个输出,然后从打印值的循环中调用。
例如:
def footToMeter(foot):
return foot * .305
print("Feet \t Meters")
for foot in range(1,11):
print(foot, "\t", footToMeter(foot))
答案 1 :(得分:1)
这是代码,但您需要确保两个表具有相同的行数。
注意我将电表的范围从range(20, 69, 6)
更改为range(20, 75, 6)
btw我没有python3,所以尝试自己将它改为python3:)
foot = 1
meter = 20
def footToMeter(foot):
return foot * .305
def meterToFoot(meter):
return round((meter/.305),3)
print "Feet \t Meters |\t Meters \t Feet"
for foot, meter in zip(range(1, 11), range(20, 75, 6)):
print ("%s \t %s \t|\t %s \t %s"
% (foot, footToMeter(foot), meter, meterToFoot(meter)))
答案 2 :(得分:0)
除非你使用像ANSI这样的特殊转义序列,否则print语句(如旧的打字机)会从左到右在控制台上写入文本,在最后一个char或最后一个屏幕列之后分成下一行。< / p>
要使工作正常,您必须单独处理单位转换和打印问题。您的转换函数应仅返回转换后的值。然后,您可以处理另一个代码块或函数的打印和格式化。
以下是应该按预期工作的代码,使用字符串格式化可以获得更好的结果:
def footToMeter(foot):
return foot * .305
def meterToFoot(meter):
return meter / .305
# printing the header
print "Feet\tMeters\t|\tMeters\tFeet\n"
# printing the values
feet, meters = 1, 20
for i in range(1, 11):
print "%0.3f\t%0.3f\t|\t%0.3f\t%0.3f" % (feet, footToMeter(feet), meters, meterToFoot(meters))
feet += 1
meters += 4 + i % 2 * 2