使用默认参数的python函数和子函数

2024-06-01 06:44:32 发布

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

我试图解决这个分配,当运行代码时,它会输出额外的输出。有谁能告诉我我哪里弄错了代码以及如何修复它?谢谢您!有时我想同时缩进和退格几行,我该怎么做?在

分配 创建一个程序,它有一个主函数和一个名为tester的子函数。main函数提示用户输入一个input"Write something (quit ends): ",并将此input作为参数发送给子函数。在

定义子函数tester,使其具有一个名为givenstring的参数,该参数具有默认值Too short。如果用户输入少于10个字符,程序将使用默认值,如果是10个或更多,它将打印usergiveninput。如果用户输入"quit",程序将终止。正常工作时,程序将print输出如下内容:

>>> 
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()。 输出示例

写点什么(放弃结束):什么? 太短了 写点东西(结束):什么意思? 什么意思? 写点东西(退出结束):好的,就这样 好的,就这样 写点什么(退出结束):我要离开这里 我要离开这里了 写点东西(退出结束):退出

我的代码:

^{pr2}$

我的代码输出:

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

Tags: ofyouhereitokoutmeanam
2条回答

看起来,您的代码结构不起作用,您希望使用原始的输入而不是输入。试试这个-

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"):

所以当你打电话的时候

^{pr2}$

givenstring替换为wrote。在

更改函数定义:

def tester(wrote, givenstring="Too short"):

将函数定义移到while循环之外会更有效。在

另外,调用tester时不带任何参数if __name__ == "__main__"。您可以将整个while True循环包装在def main():中,并调用

def tester(...):
    ...

def main():
    while True:
        ...

if __name__ == "__main__":
    main()

相关问题 更多 >