新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 605|回复: 1

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

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

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

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

x
上一讲,我们详细介绍了古代经典的《百钱百鸡》问题,还没听懂的请返回【传送门
' @, V: ^! i5 N
  _' T' R; u. g任何能帮助新大榭社区的建议,欢迎同学们在下方积极留言~% f  s2 w$ ?' l  l; p/ A7 K

, C: x* B' I" I8 h# m+ b  D好啦,废话不多说,进入今天的主题,查找女神手机号2 L  z6 k/ y1 [6 b, y5 ~
9 ]; F& U7 K5 M7 ^
先有请今天的主人公:新大榭阁下~
7 J; ]) b7 S4 Z6 r/ c' _
, D: ~0 d. \3 E7 [; J* A他一直暗恋同是计科专业的同班女神,无数次悉心热情的帮女神修改代码。
% Q! f2 p$ @0 Z3 m; q6 G0 ?; v(教学需要剧情,请不要深究哈)3 C* l+ E! i5 D3 t

! O9 K0 G  Q" P5 q有一天,女神又来找新大榭调测程序,二话没说,放下电脑就走了。
$ _6 D$ J* J1 W( |4 u& ?
: @+ p7 v* b; D新大榭小哥哥看到代码编辑器上写了一段注释:4 A, b7 U0 W) g/ ]3 x
  1. '''
    : r% M. M6 \, j  h
  2. 想和我出去约会吗?0 \" E( T+ G, a2 H7 U
  3. / [% g) ?: r: w7 n/ g: I$ R
  4. 请根据以下线索找出我手机号 1709098xxxx 的后 4 位,并在今晚 21:00 前短信告诉我集合地方~4 G$ }* g/ o- ^
  5. $ C6 i( ]  R7 B& K6 \) |
  6. ##前两位数字相同
    ! i. Z: C3 {5 q0 f- O4 E1 J) |
  7. ##后两位数字相同,但与前两位不同  g9 Y0 V4 |' z! K: T$ `% o8 l
  8. ## 4 位数字刚好是一个整数的平方
复制代码
看到这里,新大榭小哥哥心头小鹿乱撞!! Z' f0 L7 A4 R8 i
$ v+ q" c. D( v! j$ k
想到女神那甜蜜的微笑,仿佛一股清凉的泉水从他心中流过...
# r5 ~. x& g5 `) J- H" ]  C: a' U2 r8 D: m& `
喜悦和躁动涌进了他的心中,心仿佛荡漾在春水里。
( Z% R9 |( w5 U8 g: s" a" M) m/ x# h" _7 e# N  \3 ^& g
那颗心乐得快要盛不下蜜糖般的喜悦!!!* |! I4 a! ]. x9 C( u6 w/ @

/ ?# {, A  R3 }# z, T3 c6 n+ G一看手表,还有 20min,既然如此,只能来撸代码了!
6 P+ E0 A* p, @9 z, D$ ~0 y' m2 S% b' {7 i; j) z
按照女神的要求,其实就是找到一个前两位数相同、后两位数相同且相互间又不同的4位整数。
' n$ O4 a, X: [$ l- A# y1 G
- o2 W" ^: {, s2 D& p8 ~" j然后判断该整数是否是另一个整数的平方!
: z7 O" s, `8 G5 ]* e! ?7 ?; m* e" n" r1 u# m, d  s5 s
即求一个 4 位数 abcd,满足下面的条件( abcd 均属于[0,9]):

* l  d  p6 k' [& |) {4 _9 `: @1 u, E6 c+ U* v. s
7412_01.jpg
3 S- C1 }8 Y  x" ~& V  X  v" o* `- v/ @: O) y, g! w
其中由注释可知,abcd,又各自相等。
& R6 u# V7 O7 d; d' Y
( Z6 z/ z) y9 d# c! E0 I6 c" F公示有了,最简单粗暴方式还是用 穷举法,一个一个试,答案很快就会浮出水面!, z9 [) Q0 f' j2 J
新大榭此时心中想起一句名言:
$ J" L6 F( s9 ?% V9 F# U
做好流程图,程序立刻出~
首先设计双层循环穷举出所有由前两位数和后两位数组成的四位数。# E6 @6 U) {% c! v$ U

# w! u3 A" p4 E- U* Q# K: N然后在最内层穷举出所有平方后结果为四位的数,最后判断该数是否符合总条件,符合则打印答案。4 n; U; ]* h: S

" y9 P8 _9 W1 y4 o( r流程图参上
(点击看大图)( ?) Y9 ^1 h1 G3 g4 u

- a3 z# [; b' }' Z5 Z 7412_02.jpg ' i. b/ p% B( y& i$ {6 F

7 u2 ~* k, V. E  N2 G! @写流程图时新大榭发现找整数时,不一定从1开始,因为女神手机号只能是四位!
4 t3 O2 K  Z- {- M" W2 r0 |
# ?- l$ f% o6 k9 m$ h. f" N00xx,这样根本无法满足条件。2 Q0 u5 M, v8 r
" @4 C9 D1 C5 W& x1 t
既然如此是四位数,那么它的平方根只能是从 3499 之间!(为什么?( s4 i0 d- r( v
5 O* _8 n2 M. }9 D9 {
如果用上一讲的 while 循环来写,代码就是:

0 ]- b4 L; K0 z% u
  1. i = 1' @' j9 N7 H. Z
  2. while i <= 9:
    8 d' h; W& m* m! |7 S0 p( n$ l
  3.     j = 0
      X5 t6 D5 P$ s
  4.     while j <= 9:
    8 X0 N! ^3 e2 W0 _
  5.         if(i != j):
    / z5 n: [8 c/ H5 w, ?
  6.             k = 1000*i+100*i+10*j+j
    4 g& Y' P1 K8 c7 k- r2 @- Y5 a# f
  7.             t = 34/ s9 W# S( l/ A# {
  8.             while t <= 99:
    ' L- f! a4 G( y* w2 L4 Y; q% `1 p
  9.                 if(k == t*t):6 n  l' E9 o6 D7 \
  10.                     print(k)
    3 l6 M9 o/ ~$ D, Y1 B1 x
  11.                 t += 1
    / K4 X! n+ f' C7 u$ ?
  12.         j += 1
    4 O: p% M& d+ @1 d0 _7 a
  13.     i += 1
复制代码

2 M6 @3 e! w  n# [7 R# N( G' Mwhile 循环我们都用了这么久,还可以用更省心的 for 循环噢!
$ c8 [9 r# Y- ^$ h0 F( f
& c. Y- A, j% ]. Q4 t  p/ J将上面的 while 条件以及 +1 条件,统一用 for () in range() 替换。/ T% k: S+ ]! }0 w" P: n
% ]  J) w+ T  w  S# Z$ I0 r
所以流程图中所有 while 都可以修改 ,并且最后的 for 循环条件就是 (34,100)

* r5 _3 c; {% \: i4 e& C5 R
  1. for t in range(34, 100)
复制代码
代码分分钟搞定了,看下结果:
% Y6 K' j) o" X2 M9 f+ Q( d6 j7 E9 t$ b

3 s$ F# `, E% i2 x5 A; }  n/ }- z/ I* v/ a. C6 S
抬手看表,刚刚 20:50,赶紧发短信:
4 `4 ~' t# K/ A" O3 m
# F! x& L- t- y4 W
女神我们晚上去......
' T' G1 ^1 g5 n+ T% b$ J
哈哈哈,让我们祝新大榭小哥哥幸福吧~~, R0 I- f- z, ^

- ~5 i8 D* ~% B( b: N源代码(程序那么简单,先自己动手写!稍后老师附参考答案):
! k# U  k2 d" g% T& g; k; J
  1. '''; [. T7 ~/ v; X$ d! B$ [
  2. Team: 新大榭
    . u8 q, x  J+ Z& t% C
  3. Author: 张黎斌( e* p' R2 C6 o& M) P9 z
  4. update: 2021-07-14
    * X/ ^+ F' _) z! X8 N
  5. Level: A
    , j# W8 J- _5 J' l, Z% s
  6. 8 |1 D' g) I& i0 X! K7 Q
  7. 想和我出去约会吗?
      _4 s' n9 J7 z" Y
  8. 请根据以下线索找出我的手机号1709098XXXX 的后四位; a* p2 T) f6 I
  9. 2 g1 h( W, h' A& _( ^, r
  10. 线索1:前两位数字相同$ G: o  ~+ U: e+ ~1 U+ r: o
  11. 线索2:后两位数字也相同,但与前两位不同
    . m- Q9 {0 g0 [8 |
  12. 线索3:这四位数刚好是一个整数的平方) i8 J: t/ U, s8 c, x
  13. '''
    # t8 ~/ |/ h2 y% ]$ ?. z; K
  14. for i in range(10):' e% s: ^  k4 t( r  a# p  k
  15.     for j in range(10):
    ) x+ K- @% a$ V6 B8 p
  16.         if i != j:
    " T% i) S7 Q; y! q
  17.             k = 1000*i + 100*i + 10*j + j
    1 _+ _( M( m" L
  18.             for temp in range(34,100):  # 为什么 34<=temp<100 #因为四位数范围为1100~9988
    % A2 O- A" f- m; }8 _
  19.                 if temp*temp == k:) A1 S+ ^6 ~7 e, `2 @7 S9 q( M
  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 | 显示全部楼层
下面我们来看看新大榭网校学哥学姐的作业答案吧~ 例如:: u+ K! ^' W3 e5 V# G
  1. import math9 T( {7 j" w5 x- c, w
  2. & _" S( G$ ]# p  W+ [  `$ P* S
  3. for x in range(1, 10):/ i" [$ N/ U  k# B1 L
  4.     for y in range(10):
    7 |8 r+ M0 P7 K2 i
  5.         if x != y:
    ' }# z7 s: W/ R; \" @( y) w3 A
  6.             num = x * 1000 + x * 100 + y * 10 + y
    % n: E8 W: t# N( x; c
  7.             if math.sqrt(num) % 1 == 0:- m/ w% S' J2 H" w6 N
  8.                 print(num)
复制代码
再如:+ h0 `0 Y3 L0 {' M5 x2 z* D5 R; t6 g
  1. for x in range(10):
    ) ]  }" ?4 O4 G2 p. m8 N9 h3 F
  2.     for y in range(10):
    4 p8 ^) z  e- t2 p$ t4 q) d# w% J
  3.         for z in range(32,100):
    ; Z3 I) G- Z, J& s, L0 ]
  4.             k = int(f'{x}{x}{y}{y}')
    1 P9 z! O3 L4 q5 |3 c% k
  5.             if x != y and z * z == k:
    " k. G' K- ~% g0 c. Y. D, O6 c7 {
  6.                 print('号码后四位是', k)
复制代码
还有这样的:0 ^7 v- L+ a5 y9 ]2 J4 r" I9 \
  1. for i in range(32,99):
    & J$ ?) w9 T3 V
  2.     num = pow(i,2)
    2 s, e+ P7 ~7 Q! p! {
  3.     if num%10==int(num%100/10) and int(num/1000)==int(num/100)%10 and (num%10)!=int(num/1000):: Y$ |( J8 a$ W1 Q9 Y
  4.         print(num)
复制代码
还有那样的:% k( q  `& o8 H( u+ T
  1. for i in range(1,10):
    ! |, Q0 b& F2 }( }4 N1 D
  2.     for j in range(1,10):
    2 C: i* V( R+ C( @
  3.         if i != j and pow(i*1000+i*100+j*10+j, 0.5)%1==0:; L5 l6 k4 `* _7 [; V
  4.             print(i,i,j,j)
复制代码
你更支持那位学哥学姐呢?欢迎评论区留言~ 下课....
:更多公益课程欢迎注册新大榭论坛在线学习!会员级别越高,福利越多!
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新大榭七周年,感谢由您!

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

GMT+8, 2025-11-30 17:33 , Processed in 0.089888 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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