为什么有时在python中函数不起作用?

时间:2018-07-18 07:44:41

标签: python function file variables text-files

import time

def taym():
    time.sleep(5)

def getprice():
    myfile = open('C:\\Users\\DELL\\Desktop\\Python\\html1.html')
    txt = myfile.read()
    t = txt.find("$")
    it = float(txt[t-4:t])

it=8
while it != 1000:
    getprice()
    if it <= 4.74:
        print("Price is Ok!")
        taym()
    else: 
        print("The price of the coffee beans is "+txt[t-4:t+1])
        taym()

当我在python3中运行此代码时,收到如下错误消息:

"print("The price of the coffee beans is "+txt[t-4:t+1])
NameError: name 'txt' is not defined."

我知道我可以在循环内使用getprice()中的原始代码,但是我需要知道为什么当我有一个调用的函数时,它为什么不起作用。

3 个答案:

答案 0 :(得分:6)

变量txt在getprice函数中定义,您不能在该函数之外使用它。

顺便说一下,您在it上遇到了同样的问题

答案 1 :(得分:3)

我同意@Gelineau,您的代码应如下所示:

import time
def taym():
    time.sleep(5)
def getprice():
    myfile=open('C:\\Users\\DELL\\Desktop\\Python\\html1.html')
    txt=myfile.read()
    t=txt.find("$")
    it=float(txt[t-4:t])
    return it, txt, t

it = 8
while it != 1000:
    it, txt, t = getprice()
    if it<=4.74:
        print("Price is Ok!")
        taym()
    else: 
        print("The price of the coffee beans is "+txt[t-4:t+1])
        taym()

答案 2 :(得分:0)

变量“ txt”在您调用它的位置之外。它在函数中定义,但在while(超出范围)中使用。