[英]Calling function inside if statement
im trying to call function inside if statement but it does not work.我试图在 if 语句中调用函数,但它不起作用。 This is one of my first attempts in using Python.
这是我使用 Python 的第一次尝试。 What am I doing wrong?
我做错了什么?
#!/usr/bin/python
menu = raw_input ("Hello, please choose form following options (1,2,3) and press enter:\n"
"Option 1\n"
"Option 2\n"
"Option 3\n")
if menu == str("1"):
savinginfile = raw_input ("Please, state your name: ")
option1()
elif menu == str("2"):
print ("Option 2")
elif menu == str("3"):
print ("Option 3")
def option1():
test = open ("test.txt", "rw")
test.write(savinginfile)
print ("Option 1 used")
test.close()
Would recommend that you pass savinginfile
as a parameter:建议您将
savinginfile
作为参数传递:
def option1(savinginfile):
test = open ("test.txt", "rw")
test.write(savinginfile)
print ("Option 1 used")
test.close()
You need to define option1
before calling.您需要在调用之前定义
option1
。 Python interprets from top to bottom. Python 从上到下解释。
You need to define your function before you try to call it.在尝试调用它之前,您需要定义您的函数。 Just put
def option1(): #and all that code below it
above your if statements.只需将
def option1(): #and all that code below it
放在 if 语句上方即可。
It's also bad practice to throw around too many global variables.抛出太多全局变量也是不好的做法。 You shouldn't use
savinginfile
the way you are -- instead, pass it to the function as a parameter and let the function operate in its own scope.您不应该
savinginfile
现在这样使用savinginfile
—— 而是将它作为参数传递给函数,并让函数在它自己的范围内运行。 You'll need to pass the function the name of the file to use before it's able to use savinginfile
.您需要将要使用的文件名传递给函数,然后才能使用
savinginfile
。 Try instead:试试吧:
def option1(whattosaveinfile):
test = open("test.txt","a+") #probably better to use a with statement -- I'll comment below.
test.write(whattosaveinfile) #note that you use the parameter name, not the var you pass to it
print("Option 1 used")
test.close()
#that with statement works better for file-like objects because it automatically
#catches and handles any errors that occur, leaving you with a closed object.
#it's also a little prettier :) Use it like this:
#
# with open("test.txt","a+") as f:
# f.write(whattosaveinfile)
# print("Option 1 used")
#
#note that you didn't have to call f.close(), because the with block does that for you
#if you'd like to know more, look up the docs for contextlib
if menu == "1": #no reason to turn this to a string -- you've already defined it by such by enclosing it in quotes
savinginfile = raw_input("Please state your name: ")
option1(savinginfile) #putting the var in the parens will pass it to the function as a parameter.
elif menu == "2": #etc
#etc
#etc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.