【问题标题】:Printing two def function side by side Python 3并排打印两个def函数Python 3
【发布时间】:2023-03-27 09:58:01
【问题描述】:

我应该编写一个模块,使用 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))

显然,最后两个打印语句只是一个接一个地打印两个函数。

我的问题是如何让两个函数并排打印?

非常感谢任何帮助!谢谢!

【问题讨论】:

  • 欢迎来到 Stack Overflow!请查看 stackoverflow.com/questions/how-to-ask。请考虑缩短您的问题并查看herehere

标签: python function python-3.x


【解决方案1】:

反转您的代码:函数应该简单地接受输入并返回输出,然后从打印值的循环中调用。

例如:

def footToMeter(foot):
    return foot * .305

print("Feet \t Meters")
for foot in range(1,11):
    print(foot, "\t", footToMeter(foot))

【讨论】:

  • 说的很有道理哈哈!万分感谢。但我仍然对如何让它们并排打印感到困惑
  • 你的循环只会有像print(i, footToMeter(i), i+25, footToMeter(i+25))这样的行。也就是说,由您决定在每列中放置哪些值:没有预定义的函数可以为您完成。
【解决方案2】:

这是代码,但您需要确保两个表的行数相同。

请注意,我将仪表的范围从 range(20, 69, 6) 更改为 range(20, 75, 6)

顺便说一句,我没有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)))

【讨论】:

  • 谢谢盛吉。你能解释一下 %s 在做什么吗?
  • 让我们说相等的python3语句将是print(foot, footToMeter(foot), "\t|\t", meter, meterToFoot(meter))希望没有拼写错误:)。关于%s,可以googlepython string formatting expressions
【解决方案3】:

除非您使用像 ANSI 这样的特殊转义序列,否则 print 语句(如旧打字机)会在控制台上从左到右写入文本,在最后一个字符之后或在最后一个屏幕列处中断到下一行。

要使事情按您的意愿工作,您必须分别处理单位转换和打印问题。您的转换函数应该只返回转换后的值。然后你可以处理另一个代码块或函数的打印和格式化。

以下代码应该可以按预期工作,使用字符串格式以获得更好的结果:

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

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-30
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多