用蟒蛇测量从英尺和英寸到米和厘米

问题描述

大家好,我想制作一个程序来反转测量首先,用户输入两个或三个数字,反转将是米和厘米,但它没有显示正确的答案,唯一的答案是 0 我会如果你帮助我,非常感谢

foot = inch = 0


foot_to_meter = foot_to_centimeter = inch_to_meter = inch_to_centimeter =0
def read():
    foot = int(input('foot?'))
    inch = int(input('inch?'))
def calculater():
    foot_to_meter = 0.3048 * foot
    foot_to_centimeter = 100 * foot_to_meter
    # inch_to_meter = 12  * foot
    inch_to_meter = (1.0/12) * 0.3048* inch
    inch_to_centimeter = 100 * inch_to_meter
def write():
    print(f'foot is  {foot_to_centimeter} centimeter and {foot_to_meter} meter')
    print(f'inch is  {inch_to_centimeter} centimeter and {inch_to_centimeter} meter')
    # print('the' foot 'is' meter 'meter' 'and' 'foot is' foot_to_centimeter)
    # print('the' inch 'is' meter 'meter' "and" 'icnh is' inch_to_centimeter )

def main():
    read()
    calculater()
    write()

main()

解决方法

如果在 python 中为变量赋值,它不会自动使用 global 范围变量,而是将它们分配给局部范围变量。请注意,对于只读函数,global 变量会自动使用。

要解决您的问题,您可以在对全局变量赋值之前使用 global 关键字。

foot = inch = 0
foot_to_meter = foot_to_centimeter = inch_to_meter = inch_to_centimeter =0
def read():
    global foot,inch
    foot = int(input('foot?'))
    inch = int(input('inch?'))
def calculater():
    global foot_to_meter,foot_to_centimeter,inch_to_meter,inch_to_centimeter
    foot_to_meter = 0.3048 * foot
    foot_to_centimeter = 100 * foot_to_meter
    # inch_to_meter = 12  * foot
    inch_to_meter = (1.0/12) * 0.3048* inch
    inch_to_centimeter = 100 * inch_to_meter
def write():
    print(f'foot is  {foot_to_centimeter} centimeter and {foot_to_meter} meter')
    print(f'inch is  {inch_to_centimeter} centimeter and {inch_to_centimeter} meter')
    # print('the' foot 'is' meter 'meter' 'and' 'foot is' foot_to_centimeter)
    # print('the' inch 'is' meter 'meter' "and" 'icnh is' inch_to_centimeter )

def main():
    read()
    calculater()
    write()

main()

我想指出,在使用更大的代码库和导入模块时,全局变量通常会导致麻烦,这就是为什么我建议如果不是绝对必要的话不要使用它们。 你可以像这样重写你的程序:

def read():
    foot = int(input('foot?'))
    inch = int(input('inch?'))
    return foot,inch
def calculater(foot,inch):
    foot_to_meter = 0.3048 * foot
    foot_to_centimeter = 100 * foot_to_meter
    # inch_to_meter = 12  * foot
    inch_to_meter = (1.0/12) * 0.3048* inch
    inch_to_centimeter = 100 * inch_to_meter
    return foot_to_meter,inch_to_centimeter
def write(foot_to_meter,inch_to_centimeter):
    print(f'foot is  {foot_to_centimeter} centimeter and {foot_to_meter} meter')
    print(f'inch is  {inch_to_centimeter} centimeter and {inch_to_centimeter} meter')
    # print('the' foot 'is' meter 'meter' 'and' 'foot is' foot_to_centimeter)
    # print('the' inch 'is' meter 'meter' "and" 'icnh is' inch_to_centimeter )

def main():
    foot,inch = read()
    foot_to_meter,inch_to_centimeter = calculater(foot,inch)
    write(foot_to_meter,inch_to_centimeter)

main()