使用默认参数的Python函数及子函数
我正在尝试解决这个作业,当我运行代码时,它输出了一些多余的内容。谁能告诉我我哪里出错了,怎么修复它呢?谢谢!还有,我有时想同时缩进和退格几行,该怎么做呢?
作业要求
创建一个程序,里面有一个主函数和一个叫做 tester
的子函数。主函数会提示用户输入内容,提示信息是 "写点东西(输入 quit 结束): "
,然后把这个输入作为参数传给子函数。
定义子函数 tester
,它有一个参数叫 givenstring
,默认值是 Too short
。如果用户输入的内容少于10个字符,程序就会使用默认值;如果输入的内容有10个字符或更多,就会打印出用户输入的内容。如果用户输入 "quit"
,程序就会结束。当程序正常工作时,输出应该像这样:
>>>
Write something (quit ends): what?
Too short
Write something (quit ends): What do you mean?
What do you mean?
Write something (quit ends): Ok thats it
Ok thats it
Write something (quit ends): I am out of here
I am out of here
Write something (quit ends): quit
>>>
测试字符串长度最简单的方法是使用 len()
函数。
示例输出:
写点东西(输入 quit 结束): 什么?
太短了
写点东西(输入 quit 结束): 你是什么意思?
你是什么意思?
写点东西(输入 quit 结束): 好吧,就这样
好吧,就这样
写点东西(输入 quit 结束): 我走了
我走了
写点东西(输入 quit 结束): quit
我的代码:
while True:
def tester(givenstring="Too short"):
result=len(wrote)
if result<10:
print(givenstring)
else:
print(wrote)
wrote=input("Write something (quit ends): ")
if wrote=="quit":
break
else:
tester(wrote)
if __name__ == "__main__":
tester()
我的代码输出:
Write something (quit ends): what? what? Too short Write something (quit ends): What do you mean? What do you mean? What do you mean? Write something (quit ends): Ok thats it Ok thats it Ok thats it Write something (quit ends): I am out of here I am out of here I am out of here Write something (quit ends): quit
输出应该像下面这样:
Write something (quit ends): what? Too short Write something (quit ends): What do you mean? What do you mean? Write something (quit ends): Ok thats it Ok thats it Write something (quit ends): I am out of here I am out of here Write something (quit ends): quit
2 个回答
看起来你的代码结构可能不太对,而且你想用raw_input来代替input。试试这个 -
def tester(givenstring):
result=len(givenstring)
if result>10:
print(givenstring)
else:
print("Too short")
def main():
while True:
wrote=raw_input("Write something (quit ends): ")
if wrote=="quit":
break
else:
tester(wrote)
if __name__ == "__main__":
main()
你在调用 tester
时,只能传一个参数:
def tester(givenstring="Too short"):
所以当你调用
tester(wrote)
时,你把 givenstring
替换成了 wrote
。
接下来,修改一下函数的定义:
def tester(wrote, givenstring="Too short"):
把函数的定义放到 while
循环外面会更高效。
另外,在 if __name__ == "__main__"
这部分,你调用 tester
时没有传任何参数。你可以把整个 while True
循环放在 def main():
里面,然后调用这个 main 函数:
def tester(...):
...
def main():
while True:
...
if __name__ == "__main__":
main()