Python raw_input不会提示

时间:2018-02-16 18:06:46

标签: python input

运行程序时输入不会提示。我该如何解决?

import sys
def main():

    # Initialize list and determine length
    string_list = raw_input("Enter your strings to be sorted: ").split(' ')
    string_list.sort()
    length = len(string_list)

    # If there are more than one strings to sort, print the list
    # Otherwise break
    if length > 1: 
        print(string_list)
    elif length < 0:
        print("Enter more than one string to sort")
        return sys.exit()

2 个答案:

答案 0 :(得分:5)

标准习语在这里很有用:

if __name__ == '__main__':
    main()

答案 1 :(得分:2)

您需要调用您的函数。因为它不会立即执行任何操作。在这种情况下,您可以使用main()

调用您的执行方式
import sys
def main():

    # Initialize list and determine length
    string_list = raw_input("Enter your strings to be sorted: ").split(' ')
    string_list.sort()
    length = len(string_list)

    # If there are more than one strings to sort, print the list
    # Otherwise break
    if length > 1: 
        print(string_list)
    elif length < 0:
        print("Enter more than one string to sort")
        return sys.exit()
main()

创建函数时,您创建的函数除非被调用,否则永远不会执行。这在创建模块时非常有用,因为它不会立即执行它。

似乎你习惯了另一种语言,因为与某些语言(C ++ / C / Java)不同,你不需要将函数用于结构目的,而是不需要调用代码或清晰度。

Python也会自动停止执行。与(再次使用C / C ++)不同,您不需要返回任何内容。

以下情况:

if length > 1: 
    print(string_list)
elif length < 0:
    print("Enter more than one string to sort")
    return sys.exit()

您可以返回字符串:

,而不是打印(可能被视为不良做法)
if length > 1: 
    return string_list
elif length < 0:
    return "Enter more than one string to sort"

现在要打印它,您可以使用print(main())

您还应确保以简单ifelse语句结尾。使用elif结尾可能会返回奇怪的错误。

如果你仍然需要这两个循环,你可以在最后添加一个else语句并使用什么都不做的pass函数:

if length > 1: 
    return string_list
elif length < 0:
    return "Enter more than one string to sort"
else: pass

一旦你转到模块,你可能想要执行可以执行的代码,也是一个模块。这是其他答案有帮助的地方。

if __name__ == '__main__':
    main()

这指定脚本的名称(尝试在脚本中运行print(__name__))是主文件(即它没有被另一个脚本调用),然后只有 >它会自己执行吗?否则,如果导入的main()将无法运行。