尝试在python中创建一个开关盒来接收用户输入,以便在毫米/厘米/米之间转换值

2024-04-27 15:27:45 发布

您现在位置:Python中文网/ 问答频道 /正文

这就是我到目前为止所想到的。无论我输入什么,它总是运行厘米函数。 2周前我刚开始使用Python,几个月后C++,所以我还是初学者,我似乎找不到解决的办法。 C++有切换的情况,我试图用Python来复制它。 如果能得到任何帮助,我将不胜感激:)

def centimeter(x):
    print("What do you want to convert ",x," centimeters to?")
    y = str(input("(millimeters/meters):"))
    if y == 'meters':
        print(x," centimeters is", x/100, "meters")
    if y == 'millimeters':
        print(x," centimeters is", x*10, "millimeters")
def millimeters(x):
    print("What do you want to conver",x," millimeters to?")
    y = str(input("(centimeters/meters):"))
    if y == 'centimeters':
        print(x," millimeters is", x/10, "centimeters")
    if y == 'meters':
        print(x," millimeters is",x/1000, "meters")

def choose(measurements):
    converter = {
        1:centimeter(5),
        2:millimeters(5)
    }
    return converter.get(measurements, "1/2:")
ree = input("(1/2): ")
ree_name = choose(ree)
print(ree_name)


Tags: toyouinputifisdefdowhat
2条回答

好吧,在胡闹和做了更多的研究之后,我终于找到了答案

def centimeter():
    x = int(input("Input centimeter: "))
    print("What do you want to convert ",x," centimeters to?")
    y = str(input("(millimeters/meters):"))
    if y == 'meters':
        print(x," centimeters is", x/100, "meters")
    if y == 'millimeters':
        print(x," centimeters is", x*10, "millimeters")
def millimeter():
    x = int(input("Input millimeter: "))
    print("What do you want to convert",x," millimeters to?")
    y = str(input("(centimeters/meters):"))
    if y == 'centimeters':
        print(x," millimeters is", x/10, "centimeters")
    if y == 'meters':
        print(x," millimeters is",x/1000, "meters")
def meter():
    x = int(input("Input meter:"))
    print("What do you want to convert",x," meters to?")
    y = str(input("(millimeter/centimeter):"))
    if y == 'millimeter':
        print(x ," meters is",x*1000,"millimeters")
    if y == 'centimeter':
        print(x, " meter is", x*100,"centimeters")
dispatcher = {
    'centimeter' : centimeter, 'millimeter' : millimeter, 'meter' : meter
}
action = input("(millimeter/centimeter/meter):")
dispatcher[action]()

我不确定这部分叫什么,但我只是用它做了实验,效果很好。如果有人能告诉我是什么就好了

dispatcher[action]() 

但是,如果有人需要,这里有完整的程序

请注意,您正在调用millimeterscentimeters函数作为dict定义的一部分:

converter = {
    1:centimeter(5),
    2:millimeters(5)
}

在这一点上,两个函数都被调用-首先是厘米函数,然后是毫米函数。我不认为那是你的本意

你可能想做的是:

def choose(measurements):
    converter = {
        "1":centimeter,
        "2":millimeters
    }

    func = converter[measurements]
    res = func(5)
    return func

有两点需要注意:

  • 风管的键应该是字符串,而不是整数,因为这是从用户那里得到的
  • 我返回'func',因此它将在'main'函数中打印函数名。我不确定那是你想要的

相关问题 更多 >