iis配置网站php,网易企业邮箱免费入口,电商设计公司排名,百度推广自己怎么做背景#xff1a;
input() 在 ACM 编程中的底层调用原理
1. input() 的核心原理
在 Python 中#xff0c;input() 的底层实现依赖于标准输入流 sys.stdin。每次调用 input() 时#xff0c;Python 会从 sys.stdin 中读取一行字符串#xff0c;直到遇到换行符 \n 或文件结束…背景
input() 在 ACM 编程中的底层调用原理
1. input() 的核心原理
在 Python 中input() 的底层实现依赖于标准输入流 sys.stdin。每次调用 input() 时Python 会从 sys.stdin 中读取一行字符串直到遇到换行符 \n 或文件结束符EOF。读取的数据会以字符串形式返回并自动去掉行末的换行符。
2. 输入在 ACM 编程中的特点
在 ACM 比赛中输入通常是标准输入形式例如通过 stdin 提供一个多行文本流。Python 的 input() 会逐行读取这些数据因此与每次调用 input() 配合使用可以逐步解析多行输入。
3. 如何处理输入结束
在竞赛中输入结束通常通过以下方式实现 文件结束符EOF例如在本地测试中可以通过 CtrlDLinux/Mac或 CtrlZWindows模拟输入结束。固定输入行数通过第一行的数字 n 确定后续输入的行数。当 input() 遇到 EOF 时会抛出 EOFError 异常可以通过 try-except 捕获并处理。 另一种读入方式是
import sys
input sys.stdin.read # 读取所有输入
data input().splitlines() # 按行分割print(data)
1. 输入形式
输入是一系列的a和b对字符串通过空格隔开。一对a和b占一行 while True:try:s input().split( )a, b int(s[0]), int(s[1])print(a b)except EOFError:break
2. 输入形式
输入是一中复合信息第一行表示总共有多少行输入后面跟实际输入 def calculate(s):return int(s[0]) int(s[1])while True:try:n int(input())for i in range(n):s input()s s.split( )print(calculate(s))except EOFError:break 3. 输入形式
有一个终止判断的输入形式
while True:try:s input()num s.split( )res int(num[0]) int(num[1])if s ! 0 0:print(res)except EOFError:break
4. 输入形式
一个长的字符串有一部分需要一部分不重要。使用map函数进行整体数据类型的变化重要。 while True:nums input().split()if int(nums[0]) 0:breaknums list(map(int, nums[1:]))ans sum(nums)print(ans) 5. 输入形式
不同输入形式输出要求包含空行隔断。
while True:try:a, b input().split( )print(int(a) int(b), end\n\n)except Exception:break
6. 输入形式
最后一行不要换行因此第一个输入是有用的使用第一个input的信息进行循环。
1. input() 是逐行读取的
input() 是 Python 的内置函数用于从标准输入中读取一行文本。每次调用 input()它会等待用户输入一行文本并按下回车后返回该行的内容。在这段代码中n int(input()) 只读取第一行输入不会影响后续的输入数据。后续的 input() 调用会依次读取剩下的每一行。
2. 每次 input() 独立处理一行
在 for i in range(n) 中input() 会独立读取每一行数据并将其作为当前循环的输入。因此即使后续输入中包含多组数据也不会干扰 n 的值或控制循环次数。
while True:try:n int(input())for i in range(n):nums list(map(int, input().split( )))print(sum(nums[1:]))if i ! n - 1:print()except Exception:break
7. 输入形式
需要使用字典维护输入字符串 gpa_map {A: 4,B: 3,C: 2,D: 1,F: 0,
}while True:try:input_grade input().split( )sum_grade 0valid Truefor grade in input_grade:if grade in gpa_map:sum_grade gpa_map[grade]else:print(Unknown)valid Falsebreakif valid:print({:.2f}.format(sum_grade/len(input_grade)))except EOFError:break
格式化函数
数字格式输出描述3.1415926{:.2f}3.14保留小数点后两位3.1415926{:.2f}3.14带符号保留小数点后两位-1{:-.2f}-1.00带符号保留小数点后两位2.71828{:.0f}3不带小数5{:02d}05数字补零 (填充左边, 宽度为2)5{:x4d}5xxx数字补x (填充右边, 宽度为4)10{:x4d}10xx数字补x (填充右边, 宽度为4)1000000{:,}1,000,000以逗号分隔的数字格式0.25{:.2%}25.00%百分比格式1000000000{:.2e}1.00e09指数记法13{:10d} 13右对齐 (默认, 宽度为10)13{:10d}13左对齐 (宽度为10)13{:^10d} 13中间对齐 (宽度为10)11 {:b}.format(11)
{:d}.format(11)
{:o}.format(11)
{:x}.format(11)
{:#x}.format(11)
{:#X}.format(11) 1011
11
13
b
0xb
0XB 进制
8. 输入形式
分行式的多组测试样例先用sys.stdin.read input().splitlines() 看一下整体输入然后根据题意答题
import sysdef mean(s):return sum(s) / len(s)while True:try:heap_num int(input())heap_list list(map(int, input().split( )))ave_height mean(heap_list)move 0for i in range(len(heap_list)):if heap_list[i] - ave_height 0:move heap_list[i] - ave_heightprint(int(move))print()except EOFError:break 9. 输入形式
字符串输入转整型判断 while True:try:s input()# print(s)res 0for i in s:if int(i) % 2 0:res int(i)print(res, end\n\n)except EOFError:break
10. 输入形式
本题开始稍加一点难度主要是展示使用函数对象入门
def calculate(m, k):if k:bonus m // k if bonus or m - (bonus * k) bonus k:bonus calculate(m % k bonus, k)return bonuselse:return 0while True:try:m, k list(map(int, input().split( )))if m 0 and k 0:breakres m calculate(m, k) print(res)except EOFError:break 11. 共同祖先 输入形式
输入作为字典键值对录入
def find_ansester(i, family_dict):gen 0while i:i family_dict.get(i, )if i ! :gen 1return gendef find_relation(a, b, family_dict):a_gen find_ansester(a, family_dict)b_gen find_ansester(b, family_dict)# print(a_gen, b_gen)if a_gen b_gen:print(You are my elder)elif a_gen b_gen:print(You are my younger)else:print(You are my brother)while True:try:generation int(input())family_dict dict()for i in range(generation):son, dad list(map(int, input().split( )))family_dict[son] dadfind_relation(1, 2, family_dict)except EOFError:break
12. 打印数字图形 输入描述
简单输入模拟类题目直接暴力 while True:try:n int(input())for i in range(1, n 1):left [ ] * (n - i) [str(j) for j in range(1, i 1)]tmp left[:-1]right tmp[::-1]right [ele.replace( , ) for ele in right]s left rightprint(.join(s))for i in range(n - 1, 0, -1):left [ ] * (n - i) [str(j) for j in range(1, i 1)]tmp left[:-1]right tmp[::-1]right [ele.replace( , ) for ele in right]s left rightprint(.join(s))except EOFError:break
13. 镂空三角形 输入形式
有终止符号注意判断。模拟类问题
while True:try:## 每一行实际数量是 i * 2 - 1 行前空格数是n - iline input().split()if line[0] :breakn int(line[1])pattern line[0]for i in range(1, n 1):if i n:t [ ] * (n - i)new_s list()for idx in range(i * 2 - 1):if idx 0 or idx i * 2 - 2:new_s.append(pattern)else:new_s.append( )row t new_selse:row [pattern] * (i * 2 - 1)print(.join(row))print()except EOFError:break