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

Python实现5个代表人物的数值从高到低排名的技术求助

问题解决:数值从高到低排名实现

问题描述

输入5个代表不同人物的数值,将数值从高到低排名(例:数值5对应排名1,数值1对应排名5),以下是尝试的代码但无法实现需求:

number1 = []    
number2 = []    
number3 = []    
number4 = []
number5 = []

count = 0    

while count < 1:
    a = int(input("enter score num 1"))
    number1.append(a)
    
    b = int(input("enter score num 2"))
    number2.append(b)
    
    c = int(input("enter score num 3"))
    number3.append(c)
    
    d = int(input("enter score num 4"))
    number4.append(d)
    
    e = int(input("enter score num 5"))
    number5.append(e)
        
    count += 1
    
import pandas as pd    

df = pd.DataFrame(data={
    'names': ['d', 's', 'r', 'l', 'a'],
    'match1': [number1, number2, number3, number4, number5],
}) 

df["Rank"] = df["match1"].rank()
df["Rank"] = df["match1"].rank(method ='max')
df

代码问题分析

  • 创建5个独立列表存储单个数值,完全冗余,可合并为一个列表统一管理
  • 构建DataFrame时,match1列传入的是列表而非单个数值,导致rank()方法无法正确计算排名
  • rank()默认按升序计算(数值越小排名越靠前),未设置降序参数实现高分优先排名
  • 重复对Rank列赋值,第二次操作覆盖了第一次结果
  • 仅执行一次的while循环无意义,可直接移除

修正方案(两种实现方式)

方式1:使用pandas实现

import pandas as pd

# 输入5个分数
scores = []
names = ['d', 's', 'r', 'l', 'a']
for i in range(5):
    score = int(input(f"enter score num {i+1}: "))
    scores.append(score)

# 创建DataFrame
df = pd.DataFrame({
    'names': names,
    'match1': scores
})

# 计算排名:ascending=False实现降序(高分排第1),method='max'处理同分情况
df['Rank'] = df['match1'].rank(method='max', ascending=False).astype(int)

# 按排名排序展示结果
print(df.sort_values('Rank'))

方式2:基础Python实现(无需pandas)

names = ['d', 's', 'r', 'l', 'a']
scores = []

# 输入分数
for i in range(5):
    score = int(input(f"enter score num {i+1}: "))
    scores.append(score)

# 按分数降序排序,生成带名字和分数的排名列表
ranked = sorted(zip(names, scores), key=lambda x: x[1], reverse=True)

# 输出排名结果
print("排名结果:")
for idx, (name, score) in enumerate(ranked, start=1):
    print(f"排名{idx}:{name},分数{score}")

内容的提问来源于stack exchange,提问作者nikola mitrovic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:30:23