题解 | 牛客网Python用户的成就值
牛客网Python用户的成就值
https://www.nowcoder.com/practice/536abf89df3440618b3727333bc7081d
import sys
for line in sys.stdin:
a = line.split()
print(int(a[0]) + int(a[1]))
import pandas as pd
df = pd.read_csv("Nowcoder.csv")
### 解法1:布尔索引 + 列选择 ⭐️⭐️⭐️
# 思路:创建布尔掩码 py 标记语言为 Python 的行。
# 通过布尔索引 df[py] 筛选行。
# 用 ['Achievement_value'] 选择列。
# 特点:分步操作,逻辑清晰。
# py = df["Language"] == "Python"
# print(df[py]['Achievement_value'])
### 解法2:直接列访问 ⭐️⭐️⭐️
# 思路:用布尔索引 df[条件] 筛选行。
# 通过 ['列名'] 或 .列名 语法选择列。
# 特点:常见写法,但链式操作可能触发 SettingWithCopyWarning。
# print(df[df['Language']=='Python']['Achievement_value'])
# print(df[df['Language']=='Python'].Achievement_value)
### 解法3:loc 单步筛选 ⭐️⭐️⭐️⭐️
# 思路:使用 loc 同时完成行筛选和列选择。
# df['Language']=='Python' 或 df.Language=='Python' 生成行条件。
# 'Achievement_value' 指定列。
# 特点:单步操作,高效简洁,推荐写法。
print(df.loc[df['Language']=='Python','Achievement_value'])
# print(df.loc[df.Language=='Python','Achievement_value'])
### 解法4:筛选后 loc/iloc 选择列 ⭐️
# 思路:先筛选出行 (df[条件] 或 df.loc[条件])。
# 用 loc 按列名或 iloc 按位置索引选择列。
# iloc[:,2] 假设 Achievement_value 是第3列(索引从0开始)。
# 特点:iloc 依赖列位置,数据列顺序变化时会出错,不推荐。
# loc 按列名选择更稳健。
# print(df[df["Language"]=="Python"].loc[:,'Achievement_value'])
# print(df[df["Language"]=="Python"].iloc[:,2])
# print(df.loc[df["Language"]=="Python"].iloc[:,2])
### 解法5:链式操作
# 思路:先选择列,再筛选行。
# df['Achievement_value'] 先选中列。
# .loc[条件] 对列数据进行行筛选。
# 特点:语法合法但非常规,可读性较差。
# print(df['Achievement_value'].loc[df['Language']=='Python'])
# print(df['Achievement_value'].loc[df.Language=='Python'])
### 解法6:query 方法 ⭐️⭐️⭐️
# 思路:用 query("Language == 'Python'") 筛选行。
# 通过列名选择数据。
# 特点:query 适合复杂条件表达式。
# 字符串内需注意引号嵌套(外双内单或外单内双)。
# print(df.query('Language == "Python"')['Achievement_value'])
# print(df.query('Language == "Python"').Achievement_value)
# print(df.query('Language == "Python"').loc[:,'Achievement_value'])