Python程序未显示文件中的正确信息

2024-10-02 22:37:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前在显示文件的某些元素时遇到问题。所涉及的文件如下所示:

SKF Bearing Data for Cylindrical roller bearings, single row (Metric)
Principal dimensions    Basic load ratings  Fatigue load limit  Speed ratings   Designation
d[mm]   D[mm]   B[mm]   C[kN]   C0[kN]  Pu[kN]  Ref speed[r/min]    Lim speed[r/min]    Designation bearing
15  35  11  12.5    10.2    1.22    22000   26000   NJ 202 
15  35  11  12.5    10.2    1.22    22000   26000   NU 202 
15  35  11  12.5    10.2    1.22    22000   34000   NU 202 
17  40  12  20      14.3    1.73    20000   22000   N 203 
17  40  12  20      14.3    1.73    20000   22000   N 203 
17  40  12  20      14.3    1.73    20000   22000   NJ 203 
17  40  12  20      14.3    1.73    20000   22000   NU 203 
17  40  12  20      14.3    1.73    20000   22000   NUP 203 
17  40  12  20      14.3    1.73    20000   30000   NJ 203 

这种格式大约还有200多行

我在程序中有代码,可以将前8列数字数据拉入一个列表,这个列表称为“UserVals”,最后一列是一个单独的变量(col8)。col8包含所有名称轴承,名称为字符串格式

然后,程序要求用户输入所需的最大值(UserMax)和最小值(UserMin),并对列表进行排序,以找到符合用户条件的行

最后,“Cols”根据UserVals的长度查找有多少列数据Rows'根据UserVals中第一个列表的长度查找单个列的长度

此操作的代码如下所示:

for row in range(Rows): 
        Criteria = True
        for col in range(Cols): 
            Criteria = Criteria and ((UserVals[col][row] >=UserMins[col]) and (UserVals[col][row] <=UserMaxs[col]))
        if Criteria: 
            ThisRow = []
            for col in range(Cols):
              ThisRow.append(UserVals[col][row])
            print(('\t'+'%3.2f\t'*Cols)%tuple(ThisRow), col8[col])

结果输出如下所示:

Data Within Chosen Limits:
d[mm]   D[mm]   B[mm]   C[kN]   C0[kN]  Pu[kN]  Refspeed[r/min]  Limspeed[r/min] Designationbearing
25.00   62.00   24.00   64.00   55.00   6.95    12000.00        22000.00         NUP 203
25.00   62.00   24.00   64.00   55.00   6.95    12000.00        22000.00         NUP 203
25.00   62.00   24.00   64.00   55.00   6.95    12000.00        22000.00         NUP 203
30.00   62.00   20.00   55.00   49.00   6.10    13000.00        22000.00         NUP 203
30.00   72.00   19.00   58.50   48.00   6.20    11000.00        19000.00         NUP 203
30.00   72.00   19.00   58.50   48.00   6.20    11000.00        19000.00         NUP 203
30.00   72.00   19.00   58.50   48.00   6.20    11000.00        19000.00         NUP 203
35.00   72.00   17.00   56.00   48.00   6.10    11000.00        18000.00         NUP 203
35.00   72.00   17.00   56.00   48.00   6.10    11000.00        18000.00         NUP 203
35.00   72.00   17.00   56.00   48.00   6.10    11000.00        18000.00         NUP 203
35.00   72.00   23.00   69.50   63.00   8.15    11000.00        18000.00         NUP 203
35.00   72.00   23.00   69.50   63.00   8.15    11000.00        18000.00         NUP 203

“指定轴承”列显示不正确,无论输入什么限制,每次都显示不正确。奇怪的是,它只显示NUP203,而不显示它们各自的名称。这就是我遇到的一个障碍,我目前不知道是什么原因导致程序只打印文件的一个元素,而不是相应轴承的名称


Tags: 程序名称列表forcolminnurow
1条回答
网友
1楼 · 发布于 2024-10-02 22:37:37

您的问题很难理解,因为我们必须猜测在您提供的代码片段之前会出现什么,而您没有告诉我们您想要的输出是什么

以下是我的尝试:

user_provided_values = (
    (15, 35, 11, 12.5, 10.2, 1.22, 22000, 26000),
    (15, 35, 11, 12.5, 10.2, 1.22, 22000, 26000),
    (15, 35, 11, 12.5, 10.2, 1.22, 22000, 34000),
    (17, 40, 12, 20, 14.3, 1.73, 20000, 22000),
    (17, 40, 12, 20, 14.3, 1.73, 20000, 22000),
    (17, 40, 12, 20, 14.3, 1.73, 20000, 22000),
    (17, 40, 12, 20, 14.3, 1.73, 20000, 22000),
    (17, 40, 12, 20, 14.3, 1.73, 20000, 22000),
    (17, 40, 12, 20, 14.3, 1.73, 20000, 30000),
    )

designation_bearings = (
    "NJ 202", 
    "NU 202", 
    "NU 202", 
    "N 203", 
    "N 203", 
    "NJ 203", 
    "NU 203", 
    "NUP 203", 
    "NJ 203"
    )

user_provided_maximum = 22500
user_provided_minimum = 1.70

for current_values, current_bearing in zip(user_provided_values, designation_bearings):
    if all(user_provided_minimum <= x <= user_provided_maximum
           for x in current_values):
        values_to_print = "\t".join("{:3.2f}".format(x) for x in current_values)
        print(values_to_print, current_bearing)

这对你有意义吗

相关问题 更多 >