新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 591|回复: 1

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

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

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

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

x
上一讲,我们详细介绍了古代经典的《百钱百鸡》问题,还没听懂的请返回【传送门
; q+ u- p/ I/ K2 s. w$ I4 N3 O5 l) ?& y$ [
任何能帮助新大榭社区的建议,欢迎同学们在下方积极留言~
7 d: ^( ?* B* X5 _1 s. a
% q! l3 T  U+ [+ |6 e好啦,废话不多说,进入今天的主题,查找女神手机号- q# \3 _: v1 }0 n) ^
4 J( W! q: Q: n* d- o
先有请今天的主人公:新大榭阁下~2 `  W! N% \& K0 [; t: {
* e2 a# }" Q. A& l+ z  s
他一直暗恋同是计科专业的同班女神,无数次悉心热情的帮女神修改代码。  g  x8 @2 w% ~+ j: X2 u
(教学需要剧情,请不要深究哈)4 c' l3 K/ E) Q9 D2 v

  P" j1 d& r+ S! ?0 T: l有一天,女神又来找新大榭调测程序,二话没说,放下电脑就走了。
6 y  x" q, R+ g' Y0 U* a8 ^' Z5 d5 [7 k) F, l* T
新大榭小哥哥看到代码编辑器上写了一段注释:
: o% e4 y1 _- b
  1. '''1 o3 P0 |/ Y) y( u9 R
  2. 想和我出去约会吗?
    : k" B( U' D$ x: V, v

  3. ) d/ v/ x# U) w; X& y
  4. 请根据以下线索找出我手机号 1709098xxxx 的后 4 位,并在今晚 21:00 前短信告诉我集合地方~
    : ?" \& m8 L! f
  5. 1 P2 w8 y6 C3 V+ \1 W, ?
  6. ##前两位数字相同& D* Z# F2 Z' T' D( x9 j. _) f: n+ V8 M
  7. ##后两位数字相同,但与前两位不同+ {. n, g/ d6 `* s0 b3 ?
  8. ## 4 位数字刚好是一个整数的平方
复制代码
看到这里,新大榭小哥哥心头小鹿乱撞!
" o% [& T% Z8 E6 W; l2 f* N
2 r* O. i2 R6 X/ W想到女神那甜蜜的微笑,仿佛一股清凉的泉水从他心中流过...
( m2 C- _7 X) S3 x
7 n0 U4 d8 G, C3 B3 V喜悦和躁动涌进了他的心中,心仿佛荡漾在春水里。, V8 j/ w' N4 M

8 K) X& y: h. d9 O* `4 q那颗心乐得快要盛不下蜜糖般的喜悦!!!. V) V# b2 H( w4 y! W* b8 F

; i7 _" t2 q8 \3 a: ^$ Y+ Q* o一看手表,还有 20min,既然如此,只能来撸代码了!
& J: V2 [3 i! l$ c4 F
" H$ P5 j; z$ a9 O按照女神的要求,其实就是找到一个前两位数相同、后两位数相同且相互间又不同的4位整数。# b( G2 [3 k" u" }/ r, _; w0 b
4 D$ u: _% G! ]$ t3 g
然后判断该整数是否是另一个整数的平方!5 C; Z+ G& `  p7 O

. M4 d8 Y5 w; _. f即求一个 4 位数 abcd,满足下面的条件( abcd 均属于[0,9]):
6 @0 G9 N- L. ?) R
* @2 f: o$ H+ ?2 |8 q' `6 U
7412_01.jpg
/ @6 Q8 r6 b$ |0 H( u- F# b1 l9 H
! O% Z& B, m* F其中由注释可知,abcd,又各自相等。, |  n( `: ?0 F4 i: e5 j
( x" ]2 [" j; g4 R8 e) L7 D
公示有了,最简单粗暴方式还是用 穷举法,一个一个试,答案很快就会浮出水面!
' k* B3 l5 M* S新大榭此时心中想起一句名言:
. r7 H/ A% ?9 F9 Q! \7 D( l1 f8 H
做好流程图,程序立刻出~
首先设计双层循环穷举出所有由前两位数和后两位数组成的四位数。
* \8 y$ p: X" A3 ^# u0 l) C5 F% z) ^2 _) B
然后在最内层穷举出所有平方后结果为四位的数,最后判断该数是否符合总条件,符合则打印答案。
0 E- R5 p# K- s8 Z% n9 q; d# R4 |3 Q9 b. l( n4 o
流程图参上
(点击看大图)
7 ]" B/ v, g0 O4 U( N' @
2 q0 {3 @5 e: x7 J  O$ n# \& h* x 7412_02.jpg
, @% i4 q: ?+ ^0 _* l6 Z1 K5 u
, X& p. v  l" @4 K0 ?) w3 m$ e$ O写流程图时新大榭发现找整数时,不一定从1开始,因为女神手机号只能是四位!7 M' ^& R& M' S( t, O* Q
& G( L4 M( J# c$ n
00xx,这样根本无法满足条件。
4 n) B% q: t1 h+ e9 @/ w2 M( o& \& f. m! l  f
既然如此是四位数,那么它的平方根只能是从 3499 之间!(为什么?: t/ G% G  Y3 [- n4 _: H

2 n. S, |' F1 X1 [如果用上一讲的 while 循环来写,代码就是:

" r! f* G5 C3 Z  N% g+ b& q
  1. i = 16 f: ]! y" C0 X& r
  2. while i <= 9:
    / R1 m9 \8 q: H/ O( T0 |
  3.     j = 0$ W4 k6 [( Q) C2 C2 a/ \: |
  4.     while j <= 9:
    + o6 x' T) S6 ]- }- E
  5.         if(i != j):
    4 \2 y4 @; \" }  D) d4 D
  6.             k = 1000*i+100*i+10*j+j! D' r; ~4 c( z$ N( M' O
  7.             t = 340 F9 p; i" `6 s. C5 ]
  8.             while t <= 99:
    5 _1 }. U9 K  ~& s  g
  9.                 if(k == t*t):+ W8 g, Q! E; K+ Q
  10.                     print(k)5 w9 @9 X* d0 t
  11.                 t += 1. ^# O' D( C5 g  j: c! i; {
  12.         j += 1
    3 Z# U4 i' P: I" W  [: E
  13.     i += 1
复制代码
6 Q/ m, E- z7 [% b
while 循环我们都用了这么久,还可以用更省心的 for 循环噢!1 U$ H  b/ J' B: r0 X

: p3 N* R/ a: t: B将上面的 while 条件以及 +1 条件,统一用 for () in range() 替换。; A2 m- A! B( t( S8 \: H) K

# ]! d0 T, p( H3 ~5 G所以流程图中所有 while 都可以修改 ,并且最后的 for 循环条件就是 (34,100)

5 j- D" e6 H$ V; P
  1. for t in range(34, 100)
复制代码
代码分分钟搞定了,看下结果:
  U1 X! W  j; X# W1 [6 p/ Z5 C5 y  |$ ?6 }; M

! J/ ^' k9 Y6 f" g/ ?
; z3 g. o6 i" W6 S' x0 e抬手看表,刚刚 20:50,赶紧发短信:
+ E4 t; R" {1 ]0 @& c) [3 Y: n! j; G4 i+ C- l
女神我们晚上去......

3 P$ w- E! k3 S哈哈哈,让我们祝新大榭小哥哥幸福吧~~
+ H" `4 M* X! u$ z
: t7 H4 H6 {, q源代码(程序那么简单,先自己动手写!稍后老师附参考答案):
7 s- z; w& ]9 K' l; x
  1. '''
    7 [( s5 l! d) \, h
  2. Team: 新大榭
    2 {6 p% z: B' y$ @
  3. Author: 张黎斌) F2 V+ ?; G& H! G: |& Q/ a
  4. update: 2021-07-14
    " ~' k! B$ E+ Q% Q# \! r5 h
  5. Level: A$ R. l9 j: E) V' R5 t& Z1 z- o

  6. 2 s, `! ?- X5 @4 W5 H, ^
  7. 想和我出去约会吗?
    / R6 c) K$ Q+ r8 K( F; W4 p$ T
  8. 请根据以下线索找出我的手机号1709098XXXX 的后四位; l) D+ \( @# S' Z+ [) j- q
  9. * \! ?9 F7 w6 f
  10. 线索1:前两位数字相同
    9 V) R) P/ a6 y8 o$ k
  11. 线索2:后两位数字也相同,但与前两位不同" c+ [% C1 f" I  r( c6 I) j
  12. 线索3:这四位数刚好是一个整数的平方
    ! g0 ^) l. v: t. V. b, x0 E
  13. '''
    5 H" `* ^" S; Z+ _; U0 _7 {
  14. for i in range(10):: K, B0 r' C3 F" {
  15.     for j in range(10):2 ^! D  z+ D* D* [( H
  16.         if i != j:2 Y: P( R9 q& h& T+ t
  17.             k = 1000*i + 100*i + 10*j + j* m" [& f- ^: h; a& _0 V/ a8 @3 h) C
  18.             for temp in range(34,100):  # 为什么 34<=temp<100 #因为四位数范围为1100~9988
    2 H7 z/ S- }3 o7 G. {
  19.                 if temp*temp == k:
    , N8 O' u( O" l+ P3 m3 ^
  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 {9 s  ]2 X2 [. M) l
  1. import math8 n  h1 l  ]/ J
  2. % |, Z0 a% S- B. U
  3. for x in range(1, 10):: G2 F  J5 n1 W+ f( n0 n
  4.     for y in range(10):
    6 e2 o' ~7 ^1 R# d4 @1 s# f9 X
  5.         if x != y:/ l  D6 h: x" n& \! v& ~
  6.             num = x * 1000 + x * 100 + y * 10 + y2 F5 o# E, e' U3 ^: A
  7.             if math.sqrt(num) % 1 == 0:
    6 K: P: z# G/ f% y. c7 e
  8.                 print(num)
复制代码
再如:% M& ~2 `! W+ h  h8 f
  1. for x in range(10):+ f0 l7 G5 l. @9 v9 U$ _; g
  2.     for y in range(10):5 i  ~' {# }2 i! h5 t
  3.         for z in range(32,100):
    ; M9 d" R+ k: W- I
  4.             k = int(f'{x}{x}{y}{y}')
    ) W' W% c; @/ N1 R$ L9 s6 R
  5.             if x != y and z * z == k:3 W$ k2 e( a, `6 b+ [3 @
  6.                 print('号码后四位是', k)
复制代码
还有这样的:! g7 h% u: y7 L
  1. for i in range(32,99):: e" V! K" T  L- H9 k2 u5 Y+ a
  2.     num = pow(i,2)3 g) m" @+ G% p" J) d! |8 r' K
  3.     if num%10==int(num%100/10) and int(num/1000)==int(num/100)%10 and (num%10)!=int(num/1000):
    ; K8 H3 ^% P' I
  4.         print(num)
复制代码
还有那样的:: G5 Z* x. y& J; R8 K
  1. for i in range(1,10):, s, K9 J: r7 F) p( C) p
  2.     for j in range(1,10):. ]+ @: V/ l: ]/ ?6 W/ a1 A, i
  3.         if i != j and pow(i*1000+i*100+j*10+j, 0.5)%1==0:3 V# l. M) s, h  p" L" D
  4.             print(i,i,j,j)
复制代码
你更支持那位学哥学姐呢?欢迎评论区留言~ 下课....
:更多公益课程欢迎注册新大榭论坛在线学习!会员级别越高,福利越多!
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-11-2 13:21 , Processed in 0.086002 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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