运行程序时输入不会提示。我该如何解决?
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()
答案 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())
您还应确保以简单if
或else
语句结尾。使用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()
将无法运行。