假设您使用的是python2.7,问题在于您使用input来处理用户输入的输入。实际上,如果您查看相关文档(https://docs.python.org/2/library/functions.html#input),您可以看到input基本上对应于eval(raw_input()),这意味着表达式参数被解析并作为一个Python表达式进行计算。
如果要将标准输入作为字符串读取,则应使用raw_input。在
如果您使用的是python3,那么input就可以了。在
但是,请注意,您应该以这样的方式格式化输入字符串,read_matrix可以识别同一行中的元素,以及何时应该添加新行。在
一个可能的解决方案(适用于Python2.7),保持代码的结构,并假设输入的格式是在同一行中使用空格分隔的数字和用“;”分隔的行(例如,1 2 3;4 5 6;7 8 9),是:def parse_numbers_list(formatted_string):
list_of_lists = [map(int, row.split()) for row in formatted_string.split(';')]
return list_of_lists
x = raw_input("enter the list of lists of numbers?")
print(parse_numbers_list(x))
对于python 3,类似地:
^{pr2}$
请注意,我更改了函数的名称,与一般情况一样,代码不检查输入字符串是否符合矩阵约束,即每行的列数相同。您可以添加一个检查以查看每个列表是否具有相同的大小。在
另外,完整的解决方案应该包括检查输入字符串的格式是否正确。在
当然,实现从标准输入读取矩阵的代码还有很多其他方法,包括使用外部库,例如numpy,但我认为,在您学习Python时,最好从基础知识开始。在