新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V5.9版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-音乐-法律-图书-高中课堂-实验 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

查看: 731|回复: 1

[微课] 7412 - 新大榭微课№:002 - 【案例】查找女神手机号(公开课)

 关闭 [复制链接]
发表于 2021-7-14 17:13:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

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

x
上一讲,我们详细介绍了古代经典的《百钱百鸡》问题,还没听懂的请返回【传送门
0 M1 R7 X8 G6 c1 S
, M5 C3 o- S( z! r* |" H) v任何能帮助新大榭社区的建议,欢迎同学们在下方积极留言~
8 a7 M6 p( U; w. C9 c# i$ e* b1 N3 C
好啦,废话不多说,进入今天的主题,查找女神手机号0 F% q% O* v3 W; o( r! z3 E! C9 [
4 q# E& e3 v, D( Z% S8 `
先有请今天的主人公:新大榭阁下~
) P9 X/ w0 F0 F; {8 x7 L( h+ l- b! c* Z+ ^2 [/ I8 o" i5 Y3 A$ ^
他一直暗恋同是计科专业的同班女神,无数次悉心热情的帮女神修改代码。' V( [3 l8 z: V- p0 N) ^
(教学需要剧情,请不要深究哈)
+ ~2 x6 a- `. w8 ]% S; G% s8 o& _/ k
有一天,女神又来找新大榭调测程序,二话没说,放下电脑就走了。
1 S! G/ e2 n. M" w, }0 @5 H7 r- u& r! A/ C7 Y) n
新大榭小哥哥看到代码编辑器上写了一段注释:
4 O/ p3 D$ T* ]! W$ q
  1. '''% v/ k0 G9 j$ t8 y7 b8 G
  2. 想和我出去约会吗?; R, j9 A" @3 Z! Z: B- l2 s

  3. & h; y1 r9 Q0 F& |
  4. 请根据以下线索找出我手机号 1709098xxxx 的后 4 位,并在今晚 21:00 前短信告诉我集合地方~3 i& k8 v' H, w: i2 o$ Y2 P
  5. . a! r7 A3 Q0 [/ M; D) k
  6. ##前两位数字相同( F! m% L8 g, K1 q( ]! t3 R
  7. ##后两位数字相同,但与前两位不同" d( ?( X# E7 v6 R' S: x2 ~) n
  8. ## 4 位数字刚好是一个整数的平方
复制代码
看到这里,新大榭小哥哥心头小鹿乱撞!
) g. W4 c3 c" S% s! X' ~6 K* B8 w$ s* C
想到女神那甜蜜的微笑,仿佛一股清凉的泉水从他心中流过...
: C" ?  Z& w$ j$ U! l( r7 g4 z5 ?  x2 F, f
喜悦和躁动涌进了他的心中,心仿佛荡漾在春水里。
. k5 a6 d$ w- k+ c! N& M
: s' @# j. A3 }那颗心乐得快要盛不下蜜糖般的喜悦!!!
' w8 L) O2 R+ }# S& F9 Y4 m2 h" ?5 }; d6 o3 X4 B
一看手表,还有 20min,既然如此,只能来撸代码了!
) N! z8 H0 ?3 T8 ^7 a% a* }
! Y9 }2 s  a- u9 j/ g. Y3 l3 K按照女神的要求,其实就是找到一个前两位数相同、后两位数相同且相互间又不同的4位整数。
+ C! ~# j+ a1 c9 I3 E5 v  e
8 B2 X/ U2 O0 c0 n3 ^: L5 C然后判断该整数是否是另一个整数的平方!# Q' r& B1 M0 S( A) L' h
3 s; f( S. ?0 L+ q" E8 V. t
即求一个 4 位数 abcd,满足下面的条件( abcd 均属于[0,9]):
) U/ @, i6 X5 S3 f
3 Y  R3 R2 J7 O& V
7412_01.jpg # C  W" Y$ }; b/ H9 `
: Q8 @! B# @5 Y. |. b) S) e: [
其中由注释可知,abcd,又各自相等。3 O  D+ R0 G( p* C% ~5 L

/ L( a# |1 i% f0 v8 |- n( m公示有了,最简单粗暴方式还是用 穷举法,一个一个试,答案很快就会浮出水面!
) A' \" r# N5 b新大榭此时心中想起一句名言:

1 h. e7 Q( h+ z& n
做好流程图,程序立刻出~
首先设计双层循环穷举出所有由前两位数和后两位数组成的四位数。
9 n. R& X! `8 S
3 w% @1 ]7 A% ~$ a" O: D2 z$ v6 e' l然后在最内层穷举出所有平方后结果为四位的数,最后判断该数是否符合总条件,符合则打印答案。
3 g) o/ E* O9 x% R5 d! T! C
9 J* G: h7 y2 e. E" \3 c流程图参上
(点击看大图)' X  y0 L) V1 o2 _  E  N! m, E! i

' ?# e' N! K1 o+ [% E2 _$ z3 L/ K 7412_02.jpg
$ ~7 F. {% w1 W+ C+ Z5 O/ D% R+ V) e; q6 O3 b, G* f% X
写流程图时新大榭发现找整数时,不一定从1开始,因为女神手机号只能是四位!5 ~7 d0 o4 j$ C2 j1 @
/ c. L* d  V4 e' J; {7 r
00xx,这样根本无法满足条件。; H8 O& d5 o, b) o0 N# D2 p0 p

, N1 `! _: K1 N& o) k+ B既然如此是四位数,那么它的平方根只能是从 3499 之间!(为什么?1 R6 e6 K/ P8 V% ~
* j8 C7 x! A, @2 A# x
如果用上一讲的 while 循环来写,代码就是:

3 m. w+ p. }3 K1 t8 d- i
  1. i = 1
    ! p9 [2 N  T5 X9 P3 m* L+ S5 U# r
  2. while i <= 9:
    ) M$ u! t# N8 t- J/ ?
  3.     j = 0
    7 k3 H* X, i& }" g" R) L
  4.     while j <= 9:2 Z& C1 O1 `& m% k
  5.         if(i != j):
    . t. b) Z8 l& d* j% }* h/ \
  6.             k = 1000*i+100*i+10*j+j
    + w& @9 G: \/ V5 ~& s( n: l6 M9 x
  7.             t = 347 @4 F) m% {% @% y
  8.             while t <= 99:
    ' |; H+ ?: f+ t3 s8 m9 N
  9.                 if(k == t*t):# y, x  ]5 C3 q: B# `" j. P, ^7 c
  10.                     print(k)4 w4 R- `# ~8 C/ L7 |
  11.                 t += 1
    1 U$ J2 Q0 H* S
  12.         j += 1
    . {9 m& c: U/ r: D% y6 E8 [1 k$ R8 `
  13.     i += 1
复制代码

- v2 O$ N* F* t7 o' k. F% |while 循环我们都用了这么久,还可以用更省心的 for 循环噢!  P& j" `* o: }
. G$ G: V5 i# e# s' T6 P
将上面的 while 条件以及 +1 条件,统一用 for () in range() 替换。/ Y- w$ ]4 }# d7 d$ D
# D% w" l: X$ H- [" _5 @
所以流程图中所有 while 都可以修改 ,并且最后的 for 循环条件就是 (34,100)
+ V/ ~# u) ]3 O; f# S; g
  1. for t in range(34, 100)
复制代码
代码分分钟搞定了,看下结果:
7 [3 \, m8 ?9 z" v( r1 |
9 z' [) u* ?6 I: w* G
, Z7 K0 A1 |" L% W3 E* Y" E
! ]# p  @" Y+ D抬手看表,刚刚 20:50,赶紧发短信:
: D' h) v  y: }! O5 F' \! F( [2 P' g% U* u
女神我们晚上去......

% K$ c' @8 x4 _哈哈哈,让我们祝新大榭小哥哥幸福吧~~! M$ ?% y. b# Y" U4 a0 v# g

0 s  T$ P1 ^# n7 U- R源代码(程序那么简单,先自己动手写!稍后老师附参考答案):

2 Q7 a; z" c6 |* f# q. F/ a7 g
  1. '''
    ' }! d9 n7 q; n/ y- B7 g
  2. Team: 新大榭
    1 f5 N& f* }1 `7 G& u1 s' a1 a
  3. Author: 张黎斌$ S' a: `5 v, z
  4. update: 2021-07-149 P2 e+ B6 d# H; c0 ]' z. h) w
  5. Level: A% c2 E- v+ Y: _( R
  6. 0 C7 U. W5 K# n, d
  7. 想和我出去约会吗?
    7 b& q3 y# E; J0 \4 U7 _; ^, X
  8. 请根据以下线索找出我的手机号1709098XXXX 的后四位
    8 M* ^" i* Y1 z% n
  9. . n  a: K6 ^3 v5 y
  10. 线索1:前两位数字相同+ q( B4 I! V2 Y7 H) W7 z
  11. 线索2:后两位数字也相同,但与前两位不同7 m4 ~3 E. G3 R# f2 J# j5 f! G) h
  12. 线索3:这四位数刚好是一个整数的平方
    9 Y2 \2 R5 Z5 `* i7 t, `
  13. '''6 ?0 l! D6 ]% w4 l8 O, X
  14. for i in range(10):
    * t' C  A" i7 S! l! T
  15.     for j in range(10):* L6 H1 O" S9 s* D3 p, m
  16.         if i != j:4 o& l; b% O7 Y. ~2 v1 O4 Q
  17.             k = 1000*i + 100*i + 10*j + j
    / l  \9 p5 ^6 B6 E
  18.             for temp in range(34,100):  # 为什么 34<=temp<100 #因为四位数范围为1100~9988
    ) f) A; o* I) w) G, x
  19.                 if temp*temp == k:
    - F7 e& D" f! r7 |8 a2 e6 l
  20.                     print("女神的手机号后四位:",k)
复制代码
注:号码虚构,如有雷同,纯属巧合!

7412.zip

472 Bytes, 阅读权限: 5, 下载次数: 2, 下载积分: 财富 -1 点

新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
Q群推荐 大榭本地求职招聘QQ群,欢迎转发分享本地招聘信息资讯! 官方招聘1群(已满);官方招聘2群:315816937 *
 楼主| 发表于 2021-7-18 09:04:05 | 显示全部楼层
下面我们来看看新大榭网校学哥学姐的作业答案吧~ 例如:
" `  `" _7 q# v% K/ u8 F2 F
  1. import math
    - y+ F5 J4 [7 n" f3 I4 o* A- ]

  2. * j( f5 D+ r/ t% ~, x+ O9 E$ N
  3. for x in range(1, 10):
    " @3 @2 n) [3 {( {
  4.     for y in range(10):
    ' n$ k5 V( J6 s/ h- s
  5.         if x != y:
    4 S9 n* s) {- r! |9 S* T
  6.             num = x * 1000 + x * 100 + y * 10 + y1 |' n0 i$ g5 [7 @: y( _7 r: T
  7.             if math.sqrt(num) % 1 == 0:
    8 ]2 B0 `5 N& B0 J
  8.                 print(num)
复制代码
再如:
* h# @9 j, o2 J2 Q
  1. for x in range(10):
    ) X" n7 x: t5 G, i* a/ s
  2.     for y in range(10):6 P, m* d) C7 w9 G# g2 s$ l# w% S* ^
  3.         for z in range(32,100):
      L0 u5 v- ^+ A+ r, q
  4.             k = int(f'{x}{x}{y}{y}')5 J$ k% ~: |$ b$ p3 f% D
  5.             if x != y and z * z == k:
    $ w; t/ U" Z: L
  6.                 print('号码后四位是', k)
复制代码
还有这样的:' I* A# m. g( n+ L. v$ l4 X( ]
  1. for i in range(32,99):
    % X& I& q# Q1 }5 f: N- \' t
  2.     num = pow(i,2)
      p+ Z* x- R$ ?+ @! F2 Z
  3.     if num%10==int(num%100/10) and int(num/1000)==int(num/100)%10 and (num%10)!=int(num/1000):
    ! C0 k% i% L8 ~+ q+ T% D+ L
  4.         print(num)
复制代码
还有那样的:2 {) v9 T5 H5 v) s3 R9 k5 W* O7 z
  1. for i in range(1,10):
    9 u* R' h" a+ V. W, x
  2.     for j in range(1,10):& |: y" u1 [4 q' x
  3.         if i != j and pow(i*1000+i*100+j*10+j, 0.5)%1==0:5 q" U, W. q# `, Z
  4.             print(i,i,j,j)
复制代码
你更支持那位学哥学姐呢?欢迎评论区留言~ 下课....
:更多公益课程欢迎注册新大榭论坛在线学习!会员级别越高,福利越多!
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2026-2-4 08:26 , Processed in 0.126177 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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