【问题标题】:How do I write a code for matrix using users input without numpy in python?python - 如何在python中使用没有numpy的用户输入编写矩阵代码?
【发布时间】:2021-03-14 23:48:54
【问题描述】:

---不使用numpy---

我必须编写一个代码来接收来自用户n 的输入,这是我的矩阵的行数(整数)。之后 - 我将收到来自用户n 矩阵的行。然后我需要打印矩阵,数字应该是浮点数。例如:

input :
2
12
34
output:
[[1.0, 2.0], [3.0, 4.0]]

我开始编写代码。我需要帮助将数字从字符串转换为浮点数。这是我开始的代码。接下来你推荐什么?

n = int(input())
matrix= []

for i in range(n):
    row = []
    r = input()
    for j in range(n):
        row.append(r.split())
matrix.append(row)
print(matrix)

【问题讨论】:

    标签: python python-3.x for-loop matrix floating-point


    【解决方案1】:

    你有问题:

        row.append(r.split())
    

    因为'12'.split() 就是['12']

    OTOH '1 2'.split() 将提供 ['1', '2']list('12') 也将提供。然后你会想要 FP 值:

        row.append([float(digit) for digit in r])
    

    【讨论】:

    • 仍然错误,它说它无法将字符串转换为浮点数?
    • 好吧,如果r 不完全是数字,那么float(digit) 就会有麻烦。考虑测试if digit.isnumeric() 以处理无效输入。您提供的示例输入建议只有数字。也许您想.rstrip() 修剪尾随换行符?
    【解决方案2】:

    你快到了。您只需要两次追加新行。你只做了一次。 matrix.append(row) 的缩进解决了这个问题。

    要将数字字符串字符作为浮点数,您可以使用内置的float() 函数。 link

    n = int(input())
    matrix= []
    
    for i in range(n):
        row = []
        r = input()
        for j in range(n):
            row.append(float(r[j]))
        matrix.append(row)
    print(matrix)
    

    【讨论】:

    • 你好,还是不行,数字还是字符串,不浮动
    • 我解决了这个问题。每个元素 "r[j]" 只需要使用内置函数 float() 进行转换
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2015-10-08
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多