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

算法分析:

  1. 创建两个列表”stud”、”score”分别存储姓名和语文分数。
  2. 使用input函数接收键盘输入,再将输入的分数,逐个添加到列表score中。可以列表的append()函数。
  3. 使用sum()函数求出score的和,除以score中的元素个数,得到平均分。
  4. 使用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)