|
|

楼主 |
发表于 2021-5-28 20:00:10
|
显示全部楼层
2. 任意输入三个数,按从小到大的顺序依次输出这三个数。设计解决该问题的算法并用流程图描述该算法。
0 m: O- h' s" n* [! L; h# ~, `3 |5 P# a
1 B: Z6 E9 m O; l9 S" @- C答:本题算法及流程图如下:
' L$ X9 M# o3 q! G% A! U
P- q, h! Y, Q# j1 M4 i本帖直接编写程序代码: // 注:答案并非唯一,以下代码仅作参考! 例1> 方法一:直接比较,换位赋值,跟P58第1题解题思路相同,代码如下:- """3 x- ~# w7 Y5 f% e' F9 l
- 《信息技术》(必修一)P58页第2题(原始比较): {: |! D; h! D8 x9 I# \
* l0 I! ~3 F0 c$ C- Version: Python 3.x
6 A; e) g$ P" v' a# w4 t2 t( j - Team: 新大榭# t( p0 L7 x+ G4 l( e! G
- Author: 张黎斌
3 u, g! l, ?9 e4 K - update: 2021-05-28
( q* }/ T8 |3 S* ] - Level: A
2 `; z/ e( W7 j' g2 S
6 _" U# y% L3 Z- Q4 \* i- c) {- """
( L( C& s" l7 N/ c7 Q
. C5 B) i/ r4 q0 X! |- # 以下为主程序核心代码 ↓↓↓
! B3 `) y+ ]) {! ]( c% R8 p - q! n7 A# I" p9 a+ z0 [! Q# J
- x=float(input('x = ')) # 定义浮点型数字类型 x
" K& s9 F x' \! F( R! f - y=float(input('y = ')) # 定义浮点型数字类型 y" Q3 f1 g# Z0 h, U3 S Y0 B
- z=float(input('z = ')) # 定义浮点型数字类型 z4 { m) B7 g* Y( e: l$ b1 Q
- 2 @9 M2 h! T$ q0 _/ J% c# }
- if x>y:8 d) j2 d, S% w6 w# _
- x,y=y,x #换位赋值 即 y>x& j# p+ H- j5 r8 F' l
- if x>z:; [- Z& ]( p5 z# v
- x,z=z,x #换位赋值 即 z>x; f: c: m0 }! {1 |+ O) _, W2 `
- if y>z:. |. n6 \3 |2 n! [; u
- y,z=z,y #换位赋值 即 z>y8 B( c2 r t# z0 x# [
-
x3 i' G3 b2 t) ? - print('\n这三个数从小到大的顺序分别为:',"\n\n",x,"\n",y,"\n",z) #综上推论,即顺序为:z>y>x
6 N, Z# U% d0 ?* q: c+ [' h
) l2 |/ ?2 \* m$ B0 R& S0 K- # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!8 S5 _( G+ Q+ G& g
- 7 I w3 x0 M1 c( V' b+ G
- print("\n--- 按回车键退出 ---")
2 ?' `% G8 \% E/ L8 V - input("")
复制代码
3 m1 ~, z( t4 D/ M" d/ \例2> 方法二:采用内置函数新思维解法,对于优秀学生要求掌握,算法推荐(关键词:append、sort、join),可参考7381号帖子- """
. c6 f" z f9 p; {+ r* Z4 M - 《信息技术》(必修一)P58页第2题(采用内置函数新思维解法,优秀学员推荐). M8 z5 X& n5 a/ I
- * v5 Z# h7 Y6 y* l
- Version: Python 3.x% c3 Y% {9 \/ c+ c+ W
- Team: 新大榭7 C5 c7 x/ c: P; G ~) y
- Author: 张黎斌7 P/ ]/ h. }# t5 }, L
- update: 2021-05-28: h" N) A8 n4 l* I" s
- Level: A
5 }7 |; L9 X) P! j
! ?% v$ I8 X, q9 h p- """
+ Y+ m$ O+ p0 O& A2 W1 B7 g5 r - . I$ z4 c6 `6 k) w2 V
- # 以下为主程序核心代码 ↓↓↓
9 T$ j" j6 [0 M8 q |- Q, E - ' t) H3 ]4 R, y
- data = [] # 创建空列表并初始化赋值为空
8 `* H4 Z3 \3 g. K( \9 [ - data.append(input("请输入第1个数:")) # 在数列中插入数据的append方法# }/ |7 o: f* n6 D! d/ L
- data.append(input("请输入第2个数:"))& S q3 k2 Q- \; h* H+ Y
- data.append(input("请输入第3个数:"))
& z9 Y' ~& |) m, \* I% l - data.sort(reverse=False) # reverse=False 表示正序排列(默认可省略);reverse=True表示倒序
7 b$ S2 j, a1 { - print(";".join(data)) # 这里采用join数据连接方法 W% G2 f6 c6 J. x w
3 T2 \3 S! m0 ~$ `, D) j- # 以下是程序优化代码 ↓↓↓ 与本题核算无关,可屏蔽程序意外退出!
5 X" r+ k+ j! e1 [
) j6 _, @6 h" Y3 Q, J2 n( c# k- q- print("\n--- 按回车键退出 ---")$ `. F& M6 x e/ Q
- input("")
复制代码 PS:例2的解法老师故意留了个漏洞,没有对输入的数据做合法性验证,如果输入的是字符串或其他数据类型,程序核算就会出错!聪明的同学们,你可以帮粗心的张老师修复这个程序BUG吗?9 c1 O7 I c/ Q4 x6 c0 f' e9 h/ b
// 已经学过程序流程控制语句的同学们可以试一试,提示:增加 if ... else... 语句 |
|