新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 557|回复: 1

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

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

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

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

x
上一讲,我们详细介绍了古代经典的《百钱百鸡》问题,还没听懂的请返回【传送门$ y2 w7 Z" ^# ~/ O. ^/ ~9 c

) P8 b, c& j3 B任何能帮助新大榭社区的建议,欢迎同学们在下方积极留言~6 R# ~, S6 }7 i. ~. d. S
  ]- I3 e9 @! n
好啦,废话不多说,进入今天的主题,查找女神手机号  x" f7 s2 A! J4 X" K
- t7 v& ^: i+ M2 Y, R
先有请今天的主人公:新大榭阁下~0 A; z9 M, \- h

2 V6 O" X$ |2 X  _1 s- }他一直暗恋同是计科专业的同班女神,无数次悉心热情的帮女神修改代码。
4 `; }, t  }( V: Y(教学需要剧情,请不要深究哈)
2 [# C& p7 j1 L  M
: z- P& w- x9 n* A" R7 d有一天,女神又来找新大榭调测程序,二话没说,放下电脑就走了。0 M  g& r) ~0 d! {
" ^- L% J' [8 r! V2 `5 c! f
新大榭小哥哥看到代码编辑器上写了一段注释:
; T0 h6 i/ d) q5 O: V
  1. '''/ c. {8 M7 W( `& |! M, \  t3 {
  2. 想和我出去约会吗?9 ?( S) V9 V! s3 U& ]. L' |
  3.   g, P) ^" v) L) n% z- Z: g2 s, i
  4. 请根据以下线索找出我手机号 1709098xxxx 的后 4 位,并在今晚 21:00 前短信告诉我集合地方~
    2 [0 W0 T, J2 j9 M, b$ {, c

  5. ) {( E6 A4 _3 l3 h# G9 z. S
  6. ##前两位数字相同
    , Y" f: t: K( z) K  O. [
  7. ##后两位数字相同,但与前两位不同
    # c4 L& P# B" I# m+ H& w1 T% X" X
  8. ## 4 位数字刚好是一个整数的平方
复制代码
看到这里,新大榭小哥哥心头小鹿乱撞!
) {* V8 Z. g6 s2 Q+ z1 z2 t. m0 A3 R6 C* K8 J5 Z4 ^( N
想到女神那甜蜜的微笑,仿佛一股清凉的泉水从他心中流过...1 c7 Z+ S6 z6 a1 @% @! R2 Y

  h+ @8 Z( G- v* W& F+ O1 q喜悦和躁动涌进了他的心中,心仿佛荡漾在春水里。
; j1 c+ ~- y: {& [# r9 b2 y. m9 r4 T
那颗心乐得快要盛不下蜜糖般的喜悦!!!0 Y4 _' g9 l4 h9 S$ T
3 |5 b. a; R1 w( [
一看手表,还有 20min,既然如此,只能来撸代码了!! m" z2 R2 y3 K8 _+ O

& ]* I, {/ L. I8 x% N+ r& |按照女神的要求,其实就是找到一个前两位数相同、后两位数相同且相互间又不同的4位整数。& v) v8 T  k7 L, g

8 R8 z0 a! s; I  H. e& g/ r$ T然后判断该整数是否是另一个整数的平方!
: x6 w' b% `0 Z3 l/ |! }' C# ?" @8 f4 A6 \/ p
即求一个 4 位数 abcd,满足下面的条件( abcd 均属于[0,9]):

+ X; G2 {) {( h  N/ ~0 L1 y4 J; L% Z! P! _' g' Y
7412_01.jpg
( k# g; q5 _2 b! }# [# t
; w+ _+ T4 G! G1 H/ h其中由注释可知,abcd,又各自相等。
7 K* q3 ]. x# f/ P
5 t- D, b3 d  j- ]公示有了,最简单粗暴方式还是用 穷举法,一个一个试,答案很快就会浮出水面!; g- [3 ~) Z, _8 L& N
新大榭此时心中想起一句名言:
! m9 i8 w/ B& F2 N1 C. x9 b; S
做好流程图,程序立刻出~
首先设计双层循环穷举出所有由前两位数和后两位数组成的四位数。
( o2 N2 ?" m0 K7 {8 o6 Q4 Z
* g' ~" z, y, `1 T然后在最内层穷举出所有平方后结果为四位的数,最后判断该数是否符合总条件,符合则打印答案。
& R' K, K+ w* U/ v0 }( W
' G! o. ?0 |& ]: y流程图参上
(点击看大图)2 i$ n3 @/ h( p

$ b' ]# @+ N1 J0 T! }/ H3 F/ y 7412_02.jpg
7 e; O) ^! o0 M5 @7 t# ~4 A' m- l3 q
7 b& u+ {' e3 h3 k8 V* l' K! R  H写流程图时新大榭发现找整数时,不一定从1开始,因为女神手机号只能是四位!' E8 O, m  t5 O# o" v' ^0 S
. B* ]" [4 e% L. c+ ?* ]" R
00xx,这样根本无法满足条件。' e3 ]* t: h" e( t

* N7 {5 a- L# n: ^; j/ v6 V  M既然如此是四位数,那么它的平方根只能是从 3499 之间!(为什么?
) T8 p# [& w! H& J9 y. `: H7 M/ w6 t) z; F; S5 P# x. b
如果用上一讲的 while 循环来写,代码就是:

3 h# X2 W( U4 K3 M1 ^
  1. i = 1
    3 G! R' E4 g8 a$ a
  2. while i <= 9:
    6 A1 u, x& @7 m' b5 j
  3.     j = 09 o' W8 ^# @# |1 F; x
  4.     while j <= 9:; x! C! f- t1 B9 M. D6 \
  5.         if(i != j):  i  ]+ f" i$ s
  6.             k = 1000*i+100*i+10*j+j: z/ T& }2 M* g: |4 W
  7.             t = 34
    $ V: b/ v& K" b/ ~
  8.             while t <= 99:
    ; R6 {' [+ d+ I9 F* _
  9.                 if(k == t*t):5 ]5 l- o. y1 Q$ n! C
  10.                     print(k)7 }# f# H. ~1 {6 n. j3 [3 W, H
  11.                 t += 1
      f- j9 k* `3 z5 @( r. [& z
  12.         j += 10 i+ M) K' o4 ]6 ?; G( T
  13.     i += 1
复制代码

4 o: @5 r* m2 z: G. Zwhile 循环我们都用了这么久,还可以用更省心的 for 循环噢!/ _/ E% w5 X! D0 T5 A; I" F

: l2 ~! D7 i. x  \% r, S5 J将上面的 while 条件以及 +1 条件,统一用 for () in range() 替换。
$ I( M1 c3 N  |% ^5 u1 _" ~' X+ L/ c+ B
所以流程图中所有 while 都可以修改 ,并且最后的 for 循环条件就是 (34,100)
% W7 r4 S, Z2 t! N- q
  1. for t in range(34, 100)
复制代码
代码分分钟搞定了,看下结果:
# p/ \  M7 {8 X* W: D5 A0 t% G5 _3 l

8 j( l4 s/ Z  Z( U  g$ |% |* t, ~& C: T8 p% [" z
抬手看表,刚刚 20:50,赶紧发短信:' s. a; t4 ~& E" S

. S, D9 V1 a) n9 |$ W0 L& Y
女神我们晚上去......

5 H6 Z' j' h( f4 [$ b哈哈哈,让我们祝新大榭小哥哥幸福吧~~, g, L6 I1 I. w8 s5 H

" A2 T2 s& n/ [% W: R% R源代码(程序那么简单,先自己动手写!稍后老师附参考答案):
  |/ i+ D% l( \) [
  1. '''
    - K4 ?- w9 {& v; s5 Q
  2. Team: 新大榭
    3 p! J1 R; V) T: ^: x- i. `5 X: U! |
  3. Author: 张黎斌
    8 Z2 Z' h' H( p& U" P& e
  4. update: 2021-07-14
    ! e$ J. O2 ^8 z  \
  5. Level: A* H) a4 `9 R% z' |( D6 o# u' X4 z

  6. ! r* F  n2 Q+ e8 U: Q
  7. 想和我出去约会吗?
    / w4 M9 O1 T; I. L5 C, r& O
  8. 请根据以下线索找出我的手机号1709098XXXX 的后四位- {) V0 w/ o, z$ e5 d4 u  H
  9. # l' c+ e; x+ J; e% ~$ J4 S
  10. 线索1:前两位数字相同6 U: c0 W2 T* G) C: n
  11. 线索2:后两位数字也相同,但与前两位不同
    0 a0 }1 u! g0 Y9 r
  12. 线索3:这四位数刚好是一个整数的平方" i8 U3 O1 R" N. i7 Q9 Z' ?9 p' d
  13. '''
    $ p. k" j$ F8 E0 O1 z8 x; x
  14. for i in range(10):! B, J7 m8 x; m8 E0 I$ {: F7 T7 {4 i# O
  15.     for j in range(10):
    : q' r! l( A4 e* \% I1 V" g
  16.         if i != j:
    . D; e8 y% D, g2 p$ z
  17.             k = 1000*i + 100*i + 10*j + j
    2 N% I2 K1 \: e0 {; B% b
  18.             for temp in range(34,100):  # 为什么 34<=temp<100 #因为四位数范围为1100~9988
    ! i0 q- j& N! a* k6 ~
  19.                 if temp*temp == k:( x' a* h* L4 u/ Q
  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 | 显示全部楼层
下面我们来看看新大榭网校学哥学姐的作业答案吧~ 例如:
3 x3 l* E4 l% p6 H# X5 j0 X
  1. import math- g% k, O2 ~* x. w& o9 Q7 s

  2. " s* e$ K! i! e0 v. [
  3. for x in range(1, 10):
    $ |3 Z: _/ x# r! ?" z! Y  ^
  4.     for y in range(10):
    5 t4 r) m. ]' z6 O3 @* h; {
  5.         if x != y:* ?8 ]- P3 z6 V+ V  g8 \
  6.             num = x * 1000 + x * 100 + y * 10 + y
    & V- @4 s8 A. U; C! n9 M. M
  7.             if math.sqrt(num) % 1 == 0:" z8 X6 _! o/ p' d5 R
  8.                 print(num)
复制代码
再如:
6 E* v4 L: c( Q+ B: W  W0 ]
  1. for x in range(10):
    ( Z. J* q* P3 ]/ W6 }
  2.     for y in range(10):
    3 z( I# ]3 t. [4 W: \/ F8 w: m
  3.         for z in range(32,100):3 J( a: C# n. d+ t) L" w; z+ K; s
  4.             k = int(f'{x}{x}{y}{y}')
    ! P% x: M5 A& \9 n& E
  5.             if x != y and z * z == k:  Z2 I. t1 b& T8 o9 m( G, B
  6.                 print('号码后四位是', k)
复制代码
还有这样的:
1 u7 ]6 d- n+ [7 ^% p
  1. for i in range(32,99):
    + B% j# y8 \% z  W8 [# Q8 J
  2.     num = pow(i,2)
    4 R+ U9 o6 Z- W& Z( _/ c- p
  3.     if num%10==int(num%100/10) and int(num/1000)==int(num/100)%10 and (num%10)!=int(num/1000):; K9 g2 x  c- H& Y' J" p7 K
  4.         print(num)
复制代码
还有那样的:
/ E' N0 j( A: s1 i& h
  1. for i in range(1,10):
    9 @; U3 n' E/ q% ^) A8 G! m) H
  2.     for j in range(1,10):
    , Q& I) v% [* I, g. F) k
  3.         if i != j and pow(i*1000+i*100+j*10+j, 0.5)%1==0:
    & v: |" {' K  ?& D. h* N- Z
  4.             print(i,i,j,j)
复制代码
你更支持那位学哥学姐呢?欢迎评论区留言~ 下课....
:更多公益课程欢迎注册新大榭论坛在线学习!会员级别越高,福利越多!
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-8-21 18:41 , Processed in 0.080309 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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