4.2运用顺序结构描述问题求解过程
4.2.1 数据的输入与输出
1.数据的输人
在Python程序设计语言中,数据输人通过input函数来实现,input()的一般格式为:
<变量> = input(['提示信息:'])
该函数返回输人的对象,可输入数字、字符串和其他任意类型对象。
在Python 3.x中, 不论用户输人什么类型的数据,input()函数的返回结果都是字符串,如果需要,可将其转换为相应的类型再处理。
例如:
问题描述:从键盘输入圆周率和半径的值,然后输出圆的面积。
示例代码:
# coding: gbk #有一些代码编辑器需要声明代码的编码类型
PI=input("请输入圆周率:")
PI=float(PI) #将接收到字符串转换成float
R = input("请输入圆的半径:")
R = float(R) #将接收到半径转换成float
print("圆周率为%f,半径为%.2f。"%(PI,R,)) #半径只输出小数点后2位
print("圆的面积是:%.2f。" % (PI*R**2) )
程序运行过程及其结果:
请输入圆周率:3.14 请输入圆的半径:30 圆周率为3.140000,半径为30.00。 圆的面积是:2826.00。
2.数据的输出
在Python 3.x中,数据输出可通过print()函数来实现,print()的一般格式为:
print( [object, •••][,sep=' '][,end='\n'])
说明:
(1) 方括号中的项是可选的,可以省略,如省略则取系统的默认值。
(2) object是要输出的对象,可以是常量、变量或表达式等。
(3) sep后面的空格(可以指定为其他字符)表示每个输出对象之间的分隔符,如果缺省的话,默认值是一个单个的空格。
例如:print(4,5,6,sep=”***”)
则输出结果为 4***5***6
(4) end后面的字符串含义为输出文本尾的一个字符串,如果缺省的话,默认值是一 个\n换行符。如果设为其他字符,如end=‘ ’,则输出当前行的所有内容后,在末尾加一个 空格,不换行接着输出下一个print()的输出对象。
例如,print()输出示例程序如下:
print("hello",end=" ")
print("world")
#输出为:
hello world
(5) print()函数支持参数格式化, 与C语言的 printf 类似。
- 使用占位符 “%[n]d”, 来控制输出整数的格式。n是一个整数,表示占位的宽度,可以省略。
age=16
height=1.78
print("Age is %4d, Height=%f"%(age,height))
#输出结果
Age is 16, Height=1.780000
#输出16时,占4个字符宽
- 使用占位符“%[m.n]f”,来控制输出float数的格式,其中m是一个整数,表示宽度,n是一个整数,表示小数位。
PI=3.1415926
print("%f"%PI) #%f保留6位小数,输出为:3.141593
print("%.2f"%PI) #保留两位小数,输出结果为:3.14
print ("His height is %f m"%(1.83))
#输出结果:His height is 1.830000 m
- 使用占位符 ”%[n]s”,来输出字符串
s1="jack"
print("%-8s,%s"%(s1,s1))
#输出结果
jack ,jack #第一个jack左对齐,占8个字符
4.2.1 学生实践
1.问题描述(4211.py):
从键盘上输入圆的半径(一个整数),然后输出其面积,要求保留两位小数。圆周率取值:3.14159
示例输入:请输入半径:7
示例输出:圆的半径:7,面积:153.94
参考代码(关键代码已用下划线替换,请补全):
r = input('请输入半径:')
_ = int(_)
PI= 3.14159
s = ________
print("圆的半径:____,面积:____"%(_,_))
2.问题描述(4212.py):
某班三名同学,姓名分别是张三、李四、王五,语文单元测试的成绩出来了,请通过键盘输入它们的成绩,算出它们的平均分,然后按下面的格式输出。
张三,98.0
李四,100.0
王五,95.0
平均分:97.67
算法分析:
- 创建两个列表”stud”、”score”分别存储姓名和语文分数。
- 使用input函数接收键盘输入,再将输入的分数,逐个添加到列表score中。可以列表的append()函数。
- 使用sum()函数求出score的和,除以score中的元素个数,得到平均分。
- 使用print()函数依次输出姓名和成绩,最后可用格式控制符“%.2f”,输出平均分,保留两位小数。
参考代码:(如不理解循环语句,可不使用)
stud=["张三","李四","王五"]
score=[]
#逐个读入学生的语文成绩
for i in range(3):
num = float( input("请输入"+stud[i]+"的语文成绩:"))
score.append(num)
#求出平均分
average = sum(score) / len(score)
#循环输出成绩
for i in range(3):
print(stud[i],score[i],sep=',')
#输出平均分
print("平均分:%.2f"%average )
4.2.2 顺序结构的应用
1.问题描述(4221.py):
有1个同学的六门科成绩数据,请通过键盘输入后,打印出该同学的姓名、各科成绩及其总分
示例输入:
张三 95 86 93 87 88 82
示例输出:(格式说明:姓名以及每科成绩各占一行)
姓名:张三
语文:95.0
数学:86.0
英语:93.0
物理:87.0
化学:88.0
生物:82.0
总分:531.00
算法分析:
-
使用input()函数,通过键盘输入多个数据然后进行处理
-
使用字符串内置函数split()将字符串分解成列表
-
使用float()函数转换字符串为float数值
-
使用sum()函数求得列表中数值的和
-
使用格式化输入占位符,控制输出结果。
参考代码
rec = input("请输入某同学的数据,格式为:\n姓名 语文 数学 英语 物理 化学 生物\n").split()
rec[1]=float(rec[1])
... ... #此处省略5行,请补全
tot= sum(________) #此处补全
print("姓名:%s"%rec[0])
print("语文:%.2f"%rec[1])
... ... #此处省略5行,请补全
print("总分:%.2f"%tot)