蓝桥青少-Python组-第二部分现场编程 👉 输入输出。
一个完整的程序主要分为:输入、处理、输出。逻辑处理部分涉及诸多知识点,是本专栏后期的重点。
此文聚焦输入输出,先搞定数据流入和流出的问题。
输入
input()
:从控制台接收用户的输入,默认输入的信息为字符串类型值。
- 一个绝不:
input()
中绝不添加提示信息,input(“请输入:”); - 多种输入:按照具体场景区分。
单行单值输入
【案例】:输入一个字符串,然后将这个字符串输出。
""" 0、字符串 """
st = input() # 默认字符串 str 类型
""" 1、整数 """
x = input()
x = int(x) # 整数 int 类型
""" 2、浮点数 """
y = input()
y = float(y) # 浮点数 float 类型(小数)
""" 可写在一行 """
p = int(input())
q = float(input())
多行单值输入
【案例】:从控制台输入三行数据,分别是:学生学号、成绩、年级。
学号为 [220001,229999][220001, 229999][220001,229999] 区间内的整数,成绩为 [0.0,100.0][0.0, 100.0][0.0,100.0] 之间的浮点数,年级为字符串。
id = int(input()) # 学号
score = float(input()) # 成绩
grade = input() # 年级
单行多值输入
基本原理:将控制台输入的字符串,按指定分隔符拆分,并转成需要的类型。通用解法:1. 列表推导式;2. 映射。以案例说明。
【编程实现】排序
连续输入 5 个正整数(正整数之间以英文逗号隔开),然后将 5 个正整数按照从大到小的顺序输出(输出排序后的正整数之间以英文逗号隔开,相同大小的正整数并列输出)。
【输入描述】
输入 5 个正整数
【输出描述】
将 5 个正整数按照从大到小的顺序输出
【样例输入】
3,2,5,5,4
【样例输出】
5,5,4,3,2
聚焦输入 1:按英文逗号分割输入的若干个数字
方案1:列表推导式
nums = [int(x) for x in input().split(",")] # nums 整数列表
方案2:映射
nums = map(int, input().split(",")) # nums 整数列表
👉 上述代码,等效于以下过程 👇
""" 1、获取输入的字符串:input() """
st = input()
""" 2、处理字符串:split(),拆分成多个子字符串 """
strs = st.split(",")
""" 3、遍历每个子字符串转成整数 int 类型 """
nums = []
for s in strs:
x = int(s)
nums.append(x)
【编程实现】 做统计
输入 10 个正整数,以空格分隔。依次输出其中的最大值、最小值以及平均 值,以逗号分隔。
【输入描述】
输入 10 正整数 (0<正整数≤1000)(0< 正整数≤1000)(0<正整数≤1000),正整数之间空格隔开。
【输出描述】
一行输出 10 个正整数中的最大值、最小值及 10 个数的平均值(平均值保留两位小数),三个值之间一个英文逗号隔开。
【样例输入】
1 2 3 4 5 6 7 8 9 10
【样例输出】
10, 1, 5.50
聚焦输入 2:按空格分割输入的若干个数字
方案1:列表推导式
nums = [int(x) for x in input().split()] # nums 整数列表
方案2:映射
nums = map(int, input().split()) # nums 整数列表
多行多值输入
几乎不会遇到,或百分百不会遇到。👈
特殊输入
极少遇到,或大概率见不到。暂省,遇到再说,避免太多知识负担。
方案:循环解决。
【案例】输入若干行,每行一个整数 (−10000≤整数≤10000)(-10000 ≤ 整数 ≤10000)(−10000≤整数≤10000),当输入是 - 1 (≤0)(≤ 0)(≤0) 时,结束输入。输出所有整数中最大的。
max = -10010
while True:
x = int(input())
if x == -1:
break
else:
if x > max:
max = x
print(max)
【进阶要求】输出最大值、最小值,及平均值(平均值保留 2 位有效数字)
【输入样例】
122
-34
56
78
355
1002
-1
【输出样例】
max = 1002, min = -34, avg = 263.17
max, min = -10010, 10010
sum = cnt = 0
while True:
x = int(input())
if x == -1:
break
else:
if x > max:
max = x
if x < min:
min = x
sum += x
cnt += 1
avg = sum / cnt
print("max = {:d}, min = {:d}, avg = {:.2f}".format(max, min, avg))
# print("max = %d, min = %d, avg = %.2f"%(max, min, avg))
输出
print()
:将括号内的信息输出到控制台,默认输出信息后,直接换行,等价于 print(, end = "\n")
。其中 end = "\n"
是默认省略项。
- 一个绝对:
print()
绝对严格按照要求输出,**不可
**输出多余的空格、换行等; - 多种输出,按照具体场景区分。
简单输出
【编程实现】
在一行中输出两个正整数,按照空格分割,按要求输出较大的值。
【输入样例】
3 5
【输出样例 1】
5
【输出样例 2】:注意空格
max = 5
聚焦输出 1:输出单个变量的值
print(max)
聚焦输出 2:格式化输出单个变量的值
print("max = %d"%(max))
# print("max = {:d}".format(max))
【完整代码】
""" 1、使用类似下例,将输入转成整数后,直接分别赋值给 x, y """
x, y = map(int, input().split())
""" 2、比较获取较大值【暂不要求】 """
max = 0
if(x > y):
max = x
else:
max = y
""" 3、输出单个变量的值 """
print(max)
""" 4、格式化输出单个变量的值 """
print("max = %d"%(max))
# print("max = {:d}".format(max))
【编程实现】 做统计
输入 10 个正整数,以空格分隔。依次输出其中的最大值、最小值以及平均 值,以逗号分隔。
【输入描述】
输入 10 正整数 (0<正整数≤1000)(0< 正整数≤1000)(0<正整数≤1000),正整数之间空格隔开。
【输出描述】
一行输出 10 个正整数中的最大值、最小值及 10 个数的平均值(平均值保留两位小数),三个值之间一个英文逗号隔开。
【样例输入】
1 2 3 4 5 6 7 8 9 10
【样例输出】
10, 1, 5.50
聚焦输出 3:格式化输出多个变量的值
max = 10
min = 1
avg = 5.50
""" %d 是整数占位符,%.2f 是浮点数占位符,.2 表示保留两个小数位 """
print("%d,%d,%.2f"%(max, min, avg))
# print("{:d},{:d},{:.2f}"format(max, min, avg))
format()
是字符串格式化方法,功能更强大,先混个眼熟,后期精进。注意:format()
格式化时的占位符,前置符号是冒号:
。
复杂输出
常遇到,很重要。知识点较多,暂省,避免太多知识负担。
方案:循环、边界判断、字符串拼接 | 直接输出。
- 直接输出:
print(a, b, c, d, sep=',', end=".")
【多值输出时,使用sep
分割】 - 字符串拼接:
str += str1 + ","
和str[:-2] + '.'
【字符串拼接后,切片整理】 - 【最重要】:循环、边界判断。需大量见题,后话。
""" 直接输出 """
print(1,2,3,4,5, sep = '+', end = '.')
# 结果是:1+2+3+4+5.