|
|

楼主 |
发表于 2021-5-28 20:00:10
|
显示全部楼层
2. 任意输入三个数,按从小到大的顺序依次输出这三个数。设计解决该问题的算法并用流程图描述该算法。4 Z9 u# [6 o U% ^ C! U. b
- G& H: {* Y% k- a答:本题算法及流程图如下:4 c5 R/ ~3 Y1 M
5 j$ z" ~% c- ^: N) Y; K
本帖直接编写程序代码: // 注:答案并非唯一,以下代码仅作参考! 例1> 方法一:直接比较,换位赋值,跟P58第1题解题思路相同,代码如下:- """
; [* k% Y: t. O' v* h - 《信息技术》(必修一)P58页第2题(原始比较)2 [# p/ Y/ [% i& G
% T0 `' q6 r# b8 x2 A$ a- Version: Python 3.x' S: a, i' m1 P
- Team: 新大榭
2 o5 @% a! l1 a6 {( ^4 R5 x' j - Author: 张黎斌" h- R6 {4 `: W& ] D( B. Z; N
- update: 2021-05-28 M4 T9 P/ \9 g' n" N" I5 _; }
- Level: A
3 `% m/ |& k9 y a o3 z - ( V- B$ C: h+ I2 B" Z5 q. C$ X% e
- """
d6 l) _3 V# D1 B4 L' F - . i: j! Y. `0 p: M& ?7 e9 Q. s5 u) a
- # 以下为主程序核心代码 ↓↓↓4 P, ~- i; P- W3 v6 L
, d& U* F4 p2 e! Q5 s3 T* k5 `% n- x=float(input('x = ')) # 定义浮点型数字类型 x
4 F' d( V0 v: b; S$ u - y=float(input('y = ')) # 定义浮点型数字类型 y
! z6 [2 N& u# ^% ` - z=float(input('z = ')) # 定义浮点型数字类型 z1 N9 [3 f% l% \- K* r2 n* k
- # [. z+ p) z, ~
- if x>y:9 X& S, y3 r8 b3 u9 V+ E _
- x,y=y,x #换位赋值 即 y>x
- u: W7 \/ T& m+ g: x2 @ - if x>z:
$ ^$ y4 h& j0 ~: p! w: |- ^ - x,z=z,x #换位赋值 即 z>x
- {* P. h1 |+ r. n+ @- Z j$ r5 F - if y>z:
" ~' B' q& c5 k - y,z=z,y #换位赋值 即 z>y2 x, u( B7 x; B8 z6 Y
-
5 l9 K2 i0 s2 j# o9 j7 d5 c - print('\n这三个数从小到大的顺序分别为:',"\n\n",x,"\n",y,"\n",z) #综上推论,即顺序为:z>y>x
% ^0 q$ x1 I7 e3 R& [5 i5 I4 ?. C/ ?
, r, n ~- k( @8 ^/ s- # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!! a8 G+ t3 ` d) N" S
- 2 t9 f3 y/ t0 x4 J8 v
- print("\n--- 按回车键退出 ---") U( T* F& s) Q# w/ ?
- input("")
复制代码 ) J3 S8 ?" X# |# L# w0 H
例2> 方法二:采用内置函数新思维解法,对于优秀学生要求掌握,算法推荐(关键词:append、sort、join),可参考7381号帖子- """
( }; G0 L# r3 F! H, y - 《信息技术》(必修一)P58页第2题(采用内置函数新思维解法,优秀学员推荐)
" M' v/ e% h$ Z6 `: o
2 q# O4 h( r, X7 P- Version: Python 3.x% o- \* {# Z! g; x* G
- Team: 新大榭* a) Z3 [% t# |4 @5 i/ N6 S6 N
- Author: 张黎斌
7 h5 u0 y7 V- t6 ~, D - update: 2021-05-28
6 ~+ w! @; N- S( ^/ c+ ^ - Level: A3 J3 h( v7 k& R+ {7 R/ A
- + a# o7 y9 A% }; i
- """% Y, x& @" o) p( P1 t3 U: a% S# d# g6 L
- & z p9 C" O; ^1 e, y% u; Z$ R
- # 以下为主程序核心代码 ↓↓↓
+ w0 m# _+ i, K* H. }
! H3 z2 Z- d0 t0 z) Z1 F- data = [] # 创建空列表并初始化赋值为空
0 @3 }* x$ o5 w6 \+ o - data.append(input("请输入第1个数:")) # 在数列中插入数据的append方法- V0 k6 Z; F, _- @, \. S7 ]
- data.append(input("请输入第2个数:"))
x+ Y. g6 f8 t8 k! l0 J& `8 E# a - data.append(input("请输入第3个数:"))
1 w. j2 p) T. h4 y3 z3 R) ^9 c - data.sort(reverse=False) # reverse=False 表示正序排列(默认可省略);reverse=True表示倒序
- D; X1 F4 R. F7 z0 l- p - print(";".join(data)) # 这里采用join数据连接方法
% G# C4 ?8 [1 e% E
2 ^, R3 F/ y8 c/ j: V' q3 P' ?- # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
' n- q& D6 r9 v7 H- l3 p% C - * f% O! Y, q, }' o
- print("\n--- 按回车键退出 ---")" [1 S. v: x7 S1 e5 f/ L3 j. F2 ^- I
- input("")
复制代码 PS:例2的解法老师故意留了个漏洞,没有对输入的数据做合法性验证,如果输入的是字符串或其他数据类型,程序核算就会出错!聪明的同学们,你可以帮粗心的张老师修复这个程序BUG吗?5 f2 o3 @) \/ T5 d( L5 S7 U
// 已经学过程序流程控制语句的同学们可以试一试,提示:增加 if ... else... 语句 |
|