山东省高中信息技术学业水平考试试题网 - 数据与计算|信息系统与社会|数据与数据结构|网络基础|数据管理与分析|移动应用设计|三维设计与创意|开源硬件项目设计|算法初步|智能系统初步

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 598|回复: 0
收起左侧

第十八讲 运用选择结构描述问题求解过程(下)

 关闭 [复制链接]

304

主题

718

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647
QQ
发表于 2020-6-21 20:48:05 | 显示全部楼层 |阅读模式
第十八讲 运用选择结构描述问题求解过程(下)
学习目标4 o7 D+ M- x9 t1 y! d. i7 G( o
掌握选择结构。
" ], E1 H5 T/ ?- ]8 ?5 j学习内容5 z$ \/ R( R* I( K* v# I# Y1 r- n
if…elif…else语句的应用
5 [7 ^& c0 i: I. q应用条件语句可以快速地实现程序的分支选择,但当分支比较多时,用if…elif…else语句来实现比较简便。
0 }9 }  N: r' m+ A(1) if…elif…else语句格式如下:
' T( V) w5 f( r& j4 eif (表达式1):
4 r- p9 m2 a/ Z0 y" X8 L  o, t    语句1
9 a' m* {" ]& v: S, i1 w  Belif (表达式2):
& ]5 z1 o6 C' `6 T% W8 Y    语句2
3 g; Y0 F* s5 i$ @    ……
6 \/ ?! F/ T" ~" D/ B. ielif (表达式N):
3 b6 @3 b6 _4 i' r3 Y    语句N) b& z1 Q" i; `# t  y
else:2 k% g+ `( C* t# q. A6 [
    语句N+1

4 x% A2 o+ ?. W+ k) `7 L# ](2)if…elif…else语句的执行过程。8 Q# E& ^9 s* S  U  d+ |
if…elif…else语句的执行过程如下图所示。! C9 B6 O. x$ g9 Z; T

; M5 q4 y& L7 @问题
: C+ Y2 I: ^8 r# M* L6 ]' M  k5 t项目小组成员经过比较,打算在某购物网站购买三种笔记本作为奖品和纪念品,它们的单价分别为6元、5元和4元。若项目小组共有经费x元,他们希望买尽可能多的笔记本作为奖品和纪念品,并能把经费用完。那么,这三种笔记本各可以买多少本?# y4 S! D( B& Z% I
思考0 L* N/ A: [" N+ {; b8 k, O7 s
根据上述问题给出的条件,思考如何编程找出符合条件的采购方案。5 z& e8 a2 t/ E+ @) v
解决上述问题的方法有多种,其中一种方法步骤如下:
/ t2 o/ B, t" B5 u: U& J9 s2 ]+ W(1)分析问题。( m4 o1 q8 a9 h: J* y0 ?  q
因为要买尽量多的笔记本,所以选择4元的笔记本,可以买到的本数最多为x/4本,但不一定能刚好把经费用完。因此,项目小组可以按如下方案购买笔记本:
  p! W; y& b' S( O" p0 W' `如果买完x/4本单价为4元的笔记本,还剩1元,则单价为4元的笔记本少买1本,换成买一本单价为5元的笔记本即可;如果买完x/4本单价为4元的笔记本,还剩2元,则单价为4元的笔记本少买1本,换成买一本单价为6元的笔记本即可;如果买完x/4本单价为4元的笔记本,还剩3元,则单价为4元的笔记本少买2本,换成买一本单价为5元的和一本单价为6元的笔记本即可。
; v$ Z' f8 w8 L; |& S6 j(2)设计算法。+ R. C/ Q( Y9 O# q7 q# `
根据分析,可先设购买笔记本的经费总费用共为x元,购买单价为6元、5元、4元笔记本的数量分别为m,n,k,具体算法描述如下:
! L* w0 {8 u7 t①输入x的值;0 k4 q- z/ U$ F% P7 S1 W
②k=x//4;* a' i" H: I1 D
③y=x%4;
# i8 Z4 P, Q; o% Z$ ~④如果y的值为0,则m=0,n=0;
/ t& l- ]$ o6 N, |⑤如果y的值为1,则m=0,n=1,k=k-1;$ b' s  g* X$ H6 `
⑥如果y的值为2,则m=1,n=0,k=k-1;0 T/ \- r, y1 q9 Y% I9 Z. N
如果y的值为3,则m=1,n=1,k=k-2;: ]% W% I2 l3 O- V
⑧输出m,n,k的值;. @8 c/ l) [* I/ a* \, L
结束。
. b8 k% `6 h/ [( Y% U(3)编写程序。
; ~' M5 `( D, \: A根据设计的算法,编写出解决该问题的程序如下:
5 r% I6 u2 _$ u' w; e3 P* ]: v/ L
  1. x = int(input("输入经费的值: "))
    ( _5 ^5 T. f, \
  2. k = x // 4
    - S9 g0 Q8 @' e/ Q+ r" N! a
  3. y = x % 4
    & m8 o$ {4 m: T" P
  4. if y==0:
    4 b& A+ }1 W0 B4 u
  5.     m=0
    ) b+ F+ e. @3 }0 Y  h  I
  6.     n=0! V1 `) G& P) l$ i
  7. elif y==1:
    0 X8 b) ~9 P0 ^2 Q
  8.     m=0
    # t/ B; _, Z/ m9 c# \
  9.     n=1
    - y, F% \1 X2 y, I
  10.     k=k-1
    - n' g% P: R* b$ K* w
  11. elif y==2:9 c( X3 R8 a# f8 o5 O& ]  X$ v9 B
  12.     m=1+ f' T' M5 o" B
  13.     n=0
    1 w; O' J/ L# `- A
  14.     k=k-1
    / A& F6 z- c) `/ k  K
  15. elif y==3:" v! l" \# I7 V8 g* E% m( C& V
  16.     m=1' K! e) @$ A5 n6 g
  17.     n=1
    % ?* O% c6 u4 x8 W' Y$ n3 r
  18.     k=k-2! e" c$ K: g) J  F3 ^9 ^
  19. print("6元的笔记本为: %d 本" % m)! N$ @( f3 ]7 Z* j: f9 T* T
  20. print("5元的笔记本为: %d 本" % n)
    3 A% D$ e2 C! u$ |
  21. print("4元的笔记本为: %d 本" % k)
复制代码
(4)调试程序。
/ K! A: T4 r, g+ f0 E8 p! P: k8 O1 M将程序输入计算机进行调试运行,如输入κ的值为398,结果如下
+ K" K% l! G' U8 w  `7 ]& T2 R0 Z输入经费的值:398
# R# H8 o* O. Y  S6元的笔记本为:1本
5 `5 Y6 z% A  K  P9 z5元的笔记本为:0本
- o9 m5 k* x" }; d- }# _4元的笔记本为:98本
. ]% U1 r0 y- S* Y8 u实践
1 U* g) z! J2 @6 t3 ~5 s, Q" Z某学习小组的三名同学为判断某年是否为闰年的问题,各编写程序如下:
! a  d+ n, c1 g! w' \
①普通年能被4整除,且不能被100整除的为闰年,(如2004年就是闰年,1901年不是闰年);
* h. x5 W$ A0 K1 v( ]! c6 b/ q②世纪年能被400整除的是闰年,(如2000年是闰年,1900年不是闰年)。9 G' X/ c$ G8 I# J% t) [
程序1:4 s, t4 ~: D+ J) K: |3 K! j( K
  1. x = int(input("请输入年份:"))/ y0 E5 ~; |4 K
  2. if x%100==0:
    0 S' w3 [9 m5 H" [5 v4 t, s9 F0 {
  3.     if x%400==0:
    ' G' y; l* R" I8 i/ s1 U7 V3 v2 D. o1 K
  4.         print("%d年是闰年" % x)
    ' u# \9 [6 @2 R2 [1 {/ m3 J
  5.     else:0 g8 C+ P/ I  Z* H: k; g
  6.         print("%d年不是闰年" % x)
    * m2 I/ V$ N/ N! d
  7. elif x%4==0:; [. |- t9 z  p. |( w; v+ D
  8.     print("%d年是闰年" % x)
    + A% w7 W5 a. r7 [/ a) O" @
  9. else:/ Q. R" ?2 [- @; [( M: Z: j: C9 P
  10.     print("%d年不是闰年" % x)
复制代码
程序2:
9 i: L" |0 E7 G7 t0 J- u
  1. x = int(input("请输入年份:")). @: ]5 f) q, m/ G
  2. year = x: V2 V( ]! L- z7 g$ F7 p
  3. if x%100==0:
    0 g0 Y8 z% F  @' Z/ M
  4.     x=x/1004 ~% k8 |; `- f% l) o+ |3 f  C
  5. if x%4>0:
    # p+ M) T3 s! v! [
  6.     print("%d年不是闰年" % year)& z$ b% Q. H' o5 l; o
  7. else:
    3 p, T. I) A& n+ `" m
  8.     print("%d年是闰年" % year)
复制代码
程序3:
: c# s! B1 ?, m: }+ M; D) o
  1. x = int(input("请输入年份:"))
    - c# G2 `/ P7 [; u: y9 V5 Y& O
  2. if x%400==0 or (x%100>0 and x%4==0):7 V! i& O$ Z# U& X6 Y! Q/ d, h
  3.     print("%d年是闰年" % x)7 j% G; h7 s; G' N8 `1 n
  4. else:
      ~2 S1 c: R7 O4 b# s* Q- S: K
  5.     print("%d年不是闰年" % x)
复制代码
各小组完成以下实践内容:. e. s9 ?1 [2 _. u, P
(1)上机调试程序,分别验证三个程序的正确性
) e  r4 G9 I8 V0 A' D(2)在这三个程序中,分别采用了不同的表达式作为判断闰年的条件。分析、讨论哪一种更好

/ e! S$ l( v/ f% Z1 a6 p& w课内任务:
0 \( q+ o: [/ h, v, f/ `项目小组成员在某购物网站上了解到某种笔记本搞优惠活动,规定一次购买6本以上(含6本)10本以下(含10)打九折,一次购买11以上(含11本)打八折。怎样根据笔记本的单价和购买数量编写程序计算总费用?补充空白处的程序代码(多分支if……elif……else语句),并验证程序是否正确。
  1. s = input("请输入购买笔记本的数量(多少本):")7 B! `6 y6 w: h% m' U
  2. s = int(s)
    7 x: W7 E2 e7 N; j$ V" s
  3. p = float(input("请输入笔记本的单价(每本多少元):"))
    ) f6 B5 o0 g7 G0 m& l5 {) I
  4. : |0 a0 L" k: f5 x1 T3 g6 ^  H! o

  5. " }3 s" b. G2 k8 V! d5 P/ G

  6. / W! t5 K  y! G  o8 J

  7. 3 h" P" |/ `/ N$ @
  8. 0 Q4 x% D- A7 j+ R3 e0 ~- n2 c
  9. 5 [3 z$ [# i' A& v+ o
  10. t = s*p*j
    ( {0 U" p3 K$ K6 N1 w5 O
  11. print("总金额数为:",t,"元")
复制代码

  V  `/ N1 u* w' V& Z
: V8 o1 T# L5 }. B/ ^: w( i
  1. s = input("请输入购买笔记本的数量(多少本):")
    ' v8 |- I$ c+ b" }0 Y
  2. s = int(s)8 V, W5 ?# B) w3 k6 n) ~+ H
  3. p = float(input("请输入笔记本的单价(每本多少元):"))
    " D% j4 Z1 S( G4 k: ~! ?
  4. if s < 6:
    7 h1 }0 g4 M5 |0 d
  5.     j = 1.0$ N& ?- V6 ~" [0 w
  6. elif s <= 10:
    " V1 k/ a. D$ u' L
  7.     j = 0.9
    + T) U: x' u/ N" ?& Y4 r
  8. else:5 ]2 R% W+ r: `* s
  9.     j = 0.8$ {* Q& z, c/ X  L- ]. s4 o
  10. t = s*p*j
    ( T. C- e# \# o# f( U
  11. print("总金额数为:",t,"元")
复制代码

+ {9 ^/ @; L- I: O& X% g- f& B& k

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖




上一篇:第十七讲 运用选择结构描述问题求解过程(上)
下一篇:第十九讲 运用循环结构描述问题求解过程(上)
+1
598°C
沙发哦 ^ ^ 马上

帖子地址: 

教书育人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

百度一下 百度二下 百度三下 开门大吉

QQ|Archiver|手机版|小黑屋|山东省高中信息技术学业水平考试试题网 ( 鲁ICP备16049757号 )|网站地图

GMT+8, 2020-10-2 00:12 , Processed in 0.306530 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表