在 python 中根据分配给两名参赛者的数据创建比率

问题描述 投票:0回答:1

我对一些脚本有疑问,该脚本应该获取一些数据 - 即玩家/得分数字并创建比率结果以供进一步分析。 请有人帮助我 - 这可能是一个小错误,但我不太有经验,只是想调整我在网上找到的内容。 我的数据如下所示:

Player1          1               
Player2          1           
-------------------------------------------
Player3          5         
Player4          1        
-------------------------------------------
Player4          2        
Player1          3               
-------------------------------------------
Player2          2           
Player5          1             
-------------------------------------------
Player5          2             
Player4          3       
-------------------------------------------
Player1          3               
Player3          1         
-------------------------------------------
Player3          2         
Player5          3                        
-------------------------------------------
Player4          3        
Player2          1          
-------------------------------------------
Player2          3           
Player1          2              
-------------------------------------------
Player4          1        
Player3          4         
-------------------------------------------
Player1          3               
Player4          2        
-------------------------------------------
Player5          3             
Player2          4          
-------------------------------------------
Player4          3        
Player5          2             
-------------------------------------------
Player3          3         
Player1          4               
-------------------------------------------
Player5          3             
Player3          2         
-------------------------------------------
Player2          1           
Player4          4        
-------------------------------------------
Player3          5         
Player2          2           
-------------------------------------------
Player1          1               
Player5          2             
-------------------------------------------

最终结果在某些情况下相当令人满意,而在某些情况下,结果与输入数据相反。 这些是结果 - 为了方便起见,我用“i”标记了错误的数字,表示“不正确”。 感叹号放在完全没有“理由”存在的分数上:

Player1 Player2 1:1
Player3 Player4 5:1
Player4 Player1 3:2 i
Player2 Player5 2:1
Player5 Player4 3:2 i
Player1 Player3 3:1
Player3 Player5 3:2 i
Player4 Player2 3:1
Player2 Player1 3:2
Player4 Player3 4:1 i
Player1 Player4 3:1 i!
Player5 Player2 4:3 i
Player4 Player5 3:2
Player3 Player1 4:3 i
Player5 Player3 3:2
Player2 Player4 4:1 i
Player3 Player2 5:2
Player1 Player5 2:1 i

我不是真正意义上的编码员,我所能想到的只是transform_results函数有问题 我可以想到以下原因,但几乎没有知识来解决它们......: - 不正确的比较逻辑:如果分数没有正确比较,则得到的比率可能不正确。 - 球员和分数的顺序:如果球员和分数的顺序维护不正确,输出可能与预期结果不匹配。 这就是我使用的代码片段: 我不会要求你重写太多,但也许这是一些很容易纠正的小故障? 我将感谢这项工作所需的统计分析所需的每一个见解,我希望有一天能赚钱,但不是现在,以防万一您想知道......;) 提前非常感谢您,祝一切顺利:)


# Function to read data from a text file
def read_data_from_file(file_name):
    data = []
    with open(file_name, 'r') as file:
        for line in file:
            line = line.strip()
            if line and not line.startswith('-'):
                data.append(line.split())
    return data

# Function to convert direct results to ratio
def transform_results(data):
    results = []
    for i in range(0, len(data), 2):
        player1, score1 = data[i][0], data[i][1]
        player2, score2 = data[i + 1][0], data[i + 1][1]
        if player1 != player2:
            if score1 > score2:
                ratio = f"{score1}:{score2}"
            else:
                ratio = f"{score2}:{score1}"
            results.append([player1, player2, ratio])
        return results

# Function to write results to a text file
def write_results_to_file(results, file_name):
    with open(file_name, 'w') as file:
        for row in results:
            file.write(' '.join(row) + '\n')

# File paths
input_file = 'C:/Users/M/Desktop/Test.txt'
output_file = 'C:/Users/M/Desktop/Results.txt'

# Read data from input file
data = read_data_from_file(input_file)

# Transform results into ratio
results = transform_results(data)

# Write results to output file
write_results_to_file(results, output_file)

print("Transformation of results completed successfully.")
python function
1个回答
0
投票

如果我理解正确,那么你需要以下内容:

# Function to read data from a text file
def read_data_from_file(file_name):
    data = []
    with open(file_name, 'r') as file:
        for line in file:
            line = line.strip()
            if line and not line.startswith('-'):
                data.append(line.split())
    return data

# Function to convert direct results to ratio
def transform_results(data):
    results = []
    for i in range(0, len(data)):
        player1, score1 = data[i][0], data[i][1]
        player2, score2 = data[i][2], data[i][3]
        if not player1 == player2:
            if score1 > score2: ratio = f"{score1}:{score2}"
            else: ratio = f"{score2}:{score1}"
            results.append([player1, player2, ratio])
    return results

# Function to write results to a text file
def write_results_to_file(results, file_name):
    with open(file_name, 'w') as file:
        for row in results:
            file.write(' '.join(row) + '\n')

# File paths
input_file = 'C:/Users/M/Desktop/Test.txt'
output_file = 'C:/Users/M/Desktop/Results.txt'

# Read data from input file
data = read_data_from_file(input_file)
results = transform_results(data)
write_results_to_file(results, output_file)

print("Transformation of results completed successfully.")
© www.soinside.com 2019 - 2024. All rights reserved.