3输入输出
- 格式:ppt
- 大小:190.00 KB
- 文档页数:15
SolutionMethod:洛⾕P1001A+BProblem(Python3基本输⼊输。
本⽂从为例,讲⼀讲 Python 3 在算法竞赛中的⼀些基本输⼊输出⽅法,以及⼀些利⽤ Python 3 特性的代码简化以下为本⽂将涉及的内容:1. input()2. str.split()3. print()4. map()5. [... for ... in ...] list 构造⽅法6. sum()直接看到题⽬:输⼊两个整数,以空格隔开,输出他们的和于是我们要先解决第⼀个问题:如何输⼊根据输⼊格式,题⽬输⼊两个整数,由空格隔开如输⼊样例20 30⽽ Python 3 的 input() 函数是读⼊⼀⾏,如 IDLE 的调试(遇到问题都可以试试 IDLE 哦)>>> a=input()20 30>>> type(a)<class 'str'>>>> a'20 30'所以 input() 返回⼀个字符串,内容为输⼊的⼀⾏但是我们想要的是输⼊的整数啊int 为整数的类型符,作为函数时表⽰为强制转换>>> a='20'>>> type(a)<class 'str'>>>> b=int(a)>>> type(b)<class 'int'>>>> b20但是我们输⼊的整数之间有空格,导致报错>>> a='20 30'>>> int(a)Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>int(a)ValueError: invalid literal for int() with base 10: '20 30'所以我们需要把输⼊的数据给分开如何分割Python 3 提供了 str.split() ⽅法,把输⼊的字符串按照空格,换⾏符,制表符等分割为由字符串组成的列表>>> a=input()python 3>>> a' python 3'>>> b=a.split()>>> type(b)<class 'list'>>>> b['python', '3']可以发现,空格符等符号在 split() 之后就消除了另外,split() 作为 str 类的⼀个成员⽅法,⽽ input() 本⾝就返回 str 类,所以可以直接简写成 input().split()>>> a=input().split()python 3 666>>> a['python', '3', '666']这样,我们是不是就可以解决题⽬了?>>> s=input().split()20 30>>> s['20', '30']因为列表⾥下标从0开始计数,所以 s[0], s[1] 分别是输⼊的两个数字,加起来不就是答案了?>>> s[0]+s[1]'2030'不对!s是由字符串组成的列表,⽽字符串加法仅仅是拼接⽽已所以得⽤ int() 强制转为整数>>> int(s[0])+int(s[1])50终于答案对了,所以之后是如何输出题⽬要求输⼊完整的 Python 3 代码⽂件,所以得⽤ print() 函数完成输出以下是 .py ⽂件的内容(可以发现这就是洛⾕给出的答案)s=input().split()print(int(s[0])+int(s[1]))在输⼊样例时,输出结果为50(⼤家可以使⽤洛⾕ IDE 或⾃⼰的 IDLE 的⽂件模式进⾏调试)所以 print() 函数会在末尾给出换⾏,⽽在算法竞赛中,评测姬⼀般不考虑⾏末空格以及⽂末换⾏,所以这样没问题如果想去掉换⾏可以使⽤print(int(s[0])+int(s[1]),end="")⽽后⾯的 end="" 就表⽰输出后不在末尾加任何东西,当然如果写成 end=" ",那么就会在末尾加上空格以下是:拓展时间单单这样可以解决 A+B Problem,但是每次都使⽤ int() 强制转换未免有点⿇烦,所以我们引出map() 函数map() 函数接收⼀个函数和⼀个列表,返回⼀个列表的迭代器(这是 Python 3 节省时间空间的办法,可以理解为这个列表的所在位置),其中这个列表的元素是输⼊ map() 的列表⾥每⼀个元素作⽤⼀遍前⾯的函数之后的返回值是不是有点懵,来看⼀个例⼦(以下为 .py ⽂件内容):def sq(x):return x**2a=[1,2,3,4,5]b=map(sq,a)print(b)以下为输出:<map object at 0x000001C807DD4AC0>呃……这是迭代器,如果想知道原来的内容应该⽤ list() 强制转换def sq(x):return x**2a=[1,2,3,4,5]b=list(map(sq,a))print(b)以下为输出:[1, 4, 9, 16, 25]所以我们先定义sq() 表⽰对输⼊的数字进⾏平⽅,然后⽤ map() 把a⾥的所有元素都进⾏了sq(),最后把结果变成 list 给b,就得到了想要的答案那我们不就可以⽤ map() 把 split() 之后由字符串组成的列表变成由数字组成的列表了吗?(以下为 IDLE 调试内容)>>> a=input().split()20 30>>> b=list(map(int,a))>>> b[20, 30]可以看见 int() 强制转换函数也适⽤,这样的话直接做加法就没问题了>>> b[0]+b[1]50所以这样写也是正确答案:a=list(map(int,input().split()))print(a[0]+a[1])除了 map() 函数可以帮忙做群体变换,还有⼀种⽅法,那就是[... for ... in ...] list 构造⽅法[f(x) for x in a] 返回⼀个列表,其中x为任意变量名,a为⼀个列表,f(x) 为⼀个可以包含x的表达式(就是说不⼀定要包含x)举个例⼦:>>> a=[x**2 for x in [1,2,3,4,5]]>>> a[1, 4, 9, 16, 25]>>> b=[0 for y in [1,2,3,4,5]]>>> b[0, 0, 0, 0, 0]在这种构造⽅法中,不需要定义函数(如之前 map() 演⽰中的sq()),⽽且直接返回列表⽽不是迭代器,所以 [f(x) for x in a] 等价于 list(map(f,a))总的来说,如果直接使⽤函数,map() 更⽅便,如果是表达式,[... for ... in ...] 更⽅便最后引进我们的重头戏⼀⾏完成 A+B problem其实,Python 3 ⾥⾯有 sum() 函数,输⼊⼀个数字列表,输出所有元素的求和>>> sum([1,2,3,4])10⽽进⾏了 map() 操作之后的列表正好就是数字列表,可以直接使⽤ sum()>>> sum(map(int,input().split()))20 3050是不是瞬间得到答案?(注意这⾥的 map() 之外可以不加 list(),因为 sum() 本⾝⽀持输⼊列表的迭代器)所以以下就是我们的⼀⾏ AC 代码:print(sum(map(int,input().split())))当然还有使⽤ [... for ... in ...] 构造⽅法的版本:print(sum([int(x) for x in input().split()]))另外这还有⼀个好处,就是不管输⼊⼏个由空格连接的数字,它都能输出所有数字的和(想想为什么)在看似杂乱的括号和函数之间存在章法,这正是代码的精髓所在那么本⽂的内容就到此结束啦,感谢⼤家的观看,也请各路⼤佬多多指教!Processing math: 100%。
1-3计算机输入输出设备A理论部分一、计算机的输入设备和输出设备概述输入设备是外界向计算机传送信息的装置。
常用的输入设备是键盘,其它输入设备有鼠标、光笔、数字化仪、扫描仪、游戏操纵器或摇杆、脚本写入器、条形码读入器、CCD(电荷藕合器件)摄像头、麦克等。
输出设备可以将计算机的数据传送到外部,转化为人们认识的形式。
常用的输出设备是显示器,其它输出设备有打印机、绘图仪等等。
早期计算机输入输出是通过运算器进行的,在输入(Input)和输出(Output)设备与存储器间没有信号的通路。
因PC机采用的总线结构,所以可在存储器与外设间直接进行传输(即直接存储器访问)-DMA(Direct Memory Access)。
二、常用的输入输出设备1、键盘键盘是在使用微机过程中接触最频繁的一种外部设备。
用户编写的计算机程序、程序运行过程中所需要的数据以及各种操作命令等都是由键盘输入的。
键盘由一组按键排成的开关阵列组成。
按下一个键就产生一个相应的扫描码。
不同位置的按键对应不同的扫描码。
键盘中的电路(实际上是一个单片计算机)将扫描码送到主机,再由主机将键盘扫描码转换成ASCII 码。
目前,微机上常用的键盘有101键、102键、104键几种。
键盘上的主要按键有三大类:字符键、控制键和功能键。
字符键包括数字、英文字母、标点符号、空格等;字母键区的键位排列。
控制键包括一些特殊控制(如删除已输入的字符等)键、功能键等。
主键盘区键位的排列与标准英文打字机一样;小键盘区有数字键、光标控制键、加减乘除键和屏幕编辑键等。
功能键是F1-F12是12个,其功能是由软件或用户定义的。
2、显示器显示器是目前计算机上最常用的输出设备。
计算机用显示器可按工作原理分为两种,一种是阴极射线管显示器,另外一种是半导体平板显示器。
阴极射线管显示器里与家用电视机的显象原理类似。
最重要的部件是一个显象管,显象管尾部末端有一个电子枪,前部是略有弧度、涂有特殊荧光材料的荧光屏。
C语言3简单运算与输入输出C语言中的运算与输入输出是编程的基础,它们是我们构建程序的重要组成部分。
本文将介绍C语言中的3种简单运算和输入输出的方法。
1. 简单运算C语言支持常见的算术运算,包括加法、减法、乘法和除法。
下面是对这些运算的具体介绍:1.1 加法运算加法运算用于将两个数值相加,并返回它们的和。
在C语言中,使用"+"符号进行加法运算。
例如,我们可以用以下代码将两个数相加并输出结果:```c#include <stdio.h>int main() {int a = 10;int b = 20;int sum = a + b;printf("两数之和:%d\n", sum);return 0;}```1.2 减法运算减法运算用于将一个数值减去另一个数值,并返回它们的差。
在C 语言中,使用"-"符号进行减法运算。
例如,我们可以用以下代码计算两个数的差并输出结果:```c#include <stdio.h>int main() {int a = 20;int b = 10;int difference = a - b;printf("两数之差:%d\n", difference);return 0;}```1.3 乘法运算乘法运算用于将两个数值相乘,并返回它们的积。
在C语言中,使用"*"符号进行乘法运算。
例如,我们可以用以下代码计算两个数的积并输出结果:```c#include <stdio.h>int main() {int a = 5;int b = 4;int product = a * b;printf("两数之积:%d\n", product);return 0;}```1.4 除法运算除法运算用于将一个数值除以另一个数值,并返回它们的商。
第四周作业1. 若有以下变量声明:char ch=’e’;int a=3,b=12345;unsigned c=65534;long d=123456;float e=3.12;double f=5.6789;如果想要得到以下的输出结果,请写出相应的程序。
(凵表示空格,程序保存为3b_1.c)ch=’e’凵or凵101(ASCII)a=凵凵凵凵凵3凵b=012345c=65534;c=fffe;c=FFFE%d=123456%e=3.120000\f=5.678900e=3.1凵凵凵凵凵f=5.7凵凵凵凵凵2. 使用下面程序来输入数据,要使x=5,u=40000,t=65537,ch1=’m’,ch2=’n’,a=-123.456,b=123456.789。
请写出正确的键盘输入形式,并自行添加输出语句验证。
(凵表示空格,将程序正确运行时键盘需要输入的所有内容保存为3b_2.txt)#include <stdio.h>int main(void){int x;unsigned u;long t;char ch1,ch2;float a;double b;scanf(“%d%u”,&x,&u);scanf(“凵t=%lx”,&t);scanf(“凵%c%c”,&ch1,&ch2); /* 第一个%前有一个空格*/scanf(“凵a=%e,b=%lf”,&a,&b);}3. 假设现有的变量类型与上题一样,所有的变量也想获得同样的值。
实际的键盘输入形式如下,请写出相应的scanf语句。
(凵表示空格, ↵表示Enter键,程序保存为3b_3.c)5凵凵凵40000↵65537↵m凵n↵-123.456,b=123456.789↵4.编写求梯形面积的程序,数据由键盘输入(程序保存为3b_4.c)。
5.输入两个复数,输出其和(程序保存为3b_5.c)假设有两个复数a+bi 和c+di,则他们的和为(a+c)+(b+d)i。