You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python在n元组矩阵中输入float类型值

问题原因

原有代码直接对input()返回的字符串调用tuple(),Python中字符串属于可迭代对象,直接转元组会逐字符拆分内容;同时代码未做数值类型转换,最终得到的是单字符字符串组成的元组,不符合预期。

正确实现方法

推荐使用空格分隔同一行元素的输入方式,输入效率更高,修正后代码如下:

rows = int(input("Enter the Number of rows : "))   
column = int(input("Enter the Number of Columns: "))

print("Enter the elements of Matrix, split values in the same row with space:")
matrix_a = []
for i in range(rows):
    # 拆分输入行、逐个转float、组装为元组
    row = tuple(map(float, input().split()))
    # 校验每行输入的元素数量匹配列数
    if len(row) != column:
        print(f"Input error: Each row must contain exactly {column} numeric values")
        exit()
    matrix_a.append(row)

print("First Matrix is: ")
for n in matrix_a:
   print(n)

熟悉逻辑后可以用列表推导简化写法,和原有代码结构保持一致:

matrix_a = [tuple(map(float, input().split())) for _ in range(rows)]

运行示例

Enter the Number of rows : 2
Enter the Number of Columns: 3
Enter the elements of Matrix, split values in the same row with space:
0.9 0.6 0.5
0.4 0.5 0.1
First Matrix is: 
(0.9, 0.6, 0.5)
(0.4, 0.5, 0.1)

最终matrix_a的结构为[(0.9, 0.6, 0.5), (0.4, 0.5, 0.1)],完全符合目标格式。

其他输入场景适配

  • 如果需要逐个输入每个元素(每输入一个数值按一次回车),替换矩阵生成部分的代码即可:
matrix_a = []
for i in range(rows):
    current_row = []
    for j in range(column):
        val = float(input(f"Row {i+1}, Column {j+1}: "))
        current_row.append(val)
    matrix_a.append(tuple(current_row))
  • 如果需要用逗号等其他符号分隔同一行元素,将input().split()改为input().split(',')即可。

注意:所有输入内容必须显式调用float()做类型转换,否则input()默认读取内容为字符串,无法参与后续数值运算。

内容的提问来源于stack exchange,提问作者Mershia Rabuni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:24:22