当我尝试调用函数时,它表示存在错误

时间:2015-04-07 20:43:13

标签: python

总结一下,我对我正在做的事情几乎一无所知所以我会写一部分代码,所以也许任何人都可以看到发生了什么。

import sys
start = input("Continue? y/n ")
if start == "y":
   startp()
elif start == "n":
   print("Party pooper")
def startp():
   text = 'text\n'
   text2 = 'text2'

for char in text:
   sys.stdout.write(char)
   sys.stdout.flush()
   time.sleep(.1)

for char in text2:
   sys.stdout.write(char)
   sys.stdout.flush()
   time.sleep(.1)

startp()

如果运行此选项,您可以输入一个字母/单词,但输出结果为

Traceback (most recent call last):
  File "C:/Users/-/Desktop/--.py", line 4, in <module>
    startp()
NameError: name 'startp' is not defined

我认为我需要做的是在用户输入yn后调用该函数 - 但我不知道如何,任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

由于python在运行时创建函数,因此在定义函数之前无法调用它。

if start == "y":
   startp()
       ^

答案 1 :(得分:0)

当你正在阅读一本书时,你是否应该从开始,他们曾经曾经幸福地生活过?就像你读一本书一样,编译器从头开始读取,因此你的函数应该在使用之前声明。

答案 2 :(得分:0)

您应该在调用之前定义您的函数。

正如输出所示,当您尝试调用它时,第4行中未定义startp()。在调用它之前定义你的函数,你的代码会更干净,可能会更好用;)

答案 3 :(得分:0)

此处产生错误:

if start == "y":
    startp()

因为startp定义在这些代码行之下。

您应该首先定义函数(除非您有理由不这样做)。此外,该函数还没有返回texttext2,也许您想在其中包含循环?

import sys
def startp():
   text = 'text\n'
   text2 = 'text2'
   for char in text:
       sys.stdout.write(char)
       sys.stdout.flush()
       time.sleep(.1)
   for char in text2:
       sys.stdout.write(char)
       sys.stdout.flush()
       time.sleep(.1)

start = input("Continue? y/n ")
if start == "y":
   startp()
elif start == "n":
   print("Party pooper")