Python3新手求助:如何将HackerRank输入转换为可用字符串?
解决HackerRank输入转换的困惑(针对「Breaking the Records」题目)
嘿,刚接触Python 3和HackerRank的话,遇到输入处理的问题太正常了!我当初第一次在HackerRank提交代码时,也卡在这里好久——毕竟IDLE里我们可以直接写死字符串测试,但HackerRank是从标准输入流读数据,不过掌握方法后就超简单~
核心输入处理方法
针对「Breaking the Records」的输入要求(第一行整数n,第二行n个空格分隔的整数),你只需要两步就能把输入转成可用的格式:
- 读取比赛场数n:用
input()读取第一行内容,再转成整数:n = int(input()) - 读取分数列表:同样用
input()读取第二行,用split()把空格分隔的字符串拆成列表,再通过map(int, ...)把每个元素转成整数,最后转成Python列表:scores = list(map(int, input().split()))
结合题目写完整代码示例
这里给你一个「Breaking the Records」的完整可运行代码,输入处理部分已经搞定,直接提交到HackerRank就能用:
# 读取输入 n = int(input()) scores = list(map(int, input().split())) # 初始化最高、最低分和计数 current_max = current_min = scores[0] break_max = break_min = 0 # 遍历分数统计破纪录次数 for score in scores[1:]: if score > current_max: current_max = score break_max += 1 elif score < current_min: current_min = score break_min += 1 # 输出结果 print(break_max, break_min)
通用输入处理思路(适用于其他HackerRank题目)
其他题目输入格式可能不同,但核心逻辑是一致的:
- 每一行输入用
input()读取,需要转类型的就用int()/float()转换; - 如果一行有多个元素,用
split()分割(默认按空格,也可以指定分隔符,比如split(',')处理逗号分隔的情况); - 如果需要读取大量行,可以用
sys.stdin模块,但新手阶段用input()循环读取就足够应对大部分题目了。
比如如果题目要求读取多行数据,你可以这样写:
# 读取k行数据 k = int(input()) for _ in range(k): line = input().strip() # strip()去掉首尾空白字符 # 处理每一行的内容
这样你就能把HackerRank的输入轻松转换成Python里能用的数据结构啦~
内容的提问来源于stack exchange,提问作者jcburda
相关产品推荐
相关产品推荐

