蓝桥青少竞赛,输入输出【Python篇】

本文聚焦蓝桥青少Python竞赛中的输入输出,包括单行单值、多行单值、单行多值、特殊输入的处理方法,并通过案例分析了输入输出的实现,如按逗号或空格分割输入数据,以及如何进行简单的和格式化的输出。
摘要由CSDN通过智能技术生成

蓝桥青少-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] [220001229999] 区间内的整数,成绩为 [ 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) 1000010000,当输入是 - 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.
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛算粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值