名称错误:未定义全局名称“numKilos”

2024-09-30 02:19:25 发布

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

def inputKilos():

    while True:
        numKilos = float(raw_input("Enter a number of Kilometers.  Enter 0 to end program. "))

        if numKilos == 0:
            break 
        else: 
            convert_kilos(numKilos)

    return

def convert_kilos(numKilos):
    numMiles = numKilos * 0.6214
    print_output()
    return

def print_output():
    print numKilos, "kilometers eqauls", numMiles, "miles."

def main():
    inputKilos()

main()

当我试图运行程序时,它显示“名称错误:未定义全局名称‘numKilos’”我不知道它为什么说没有定义numKilos。numKilos等于用户输入的数字。在


Tags: 名称trueconvertoutputreturnmaindeffloat
3条回答

这些是局部变量,不是全局变量。在

你可以试试这个:

#!/usr/bin/python

def inputKilos():
    while True:
        numKilos = float(raw_input("Enter a number of Kilometers.  Enter 0 to end program. "))
        if numKilos == 0:
            break 
        else: 
            miles = convert_kilos(numKilos)
            print_output(numKilos,miles)
    return

def convert_kilos(numKilos):
    numMiles = numKilos * 0.6214
    return numMiles

def print_output(numKilos,numMiles):
    print numKilos, "kilometers eqauls", numMiles, "miles."


inputKilos()

或使用全局关键字:

^{pr2}$

numKilosinputKilos和{}中的局部变量,但不是{}。只能从该函数内部访问局部变量。在

要传递变量,请使用return <value>从函数中返回一个值,然后使用result = function()来收集它,或者通过将值传递到函数中(就像您对convert_kilos所做的那样)来进行相反的操作。在

以下是重构版本:

MILES_PER_KM = 0.621371

def get_float(prompt=''):
    while True:
        try:
            return float(raw_input(prompt))
        except ValueError:
            pass

def main():
    while True:
        kms = get_float('Enter a distance in kms (or 0 to exit): ')
        if kms:
            miles = MILES_PER_KM * kms
            print '  {} kilometers is {} miles.'.format(kms, miles)
        else:
            break

if __name__=='__main__':
    main()

相关问题 更多 >

    热门问题