新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

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

查看: 629|回复: 1

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

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

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

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

x
上一讲,我们详细介绍了古代经典的《百钱百鸡》问题,还没听懂的请返回【传送门' i7 F( v* w) e2 Y) r) ]6 a' S
* L! G9 b, D2 R
任何能帮助新大榭社区的建议,欢迎同学们在下方积极留言~& K. N2 [, F; D8 X7 D3 J
+ n" e$ w9 i$ S
好啦,废话不多说,进入今天的主题,查找女神手机号
- S) V" G; G; o
, t! F5 B0 w1 m, a) n  \) f先有请今天的主人公:新大榭阁下~
1 o. t  k  `- D) K% _5 a  E- y0 h& g
6 t0 e* X* o4 F/ [; T. }2 z他一直暗恋同是计科专业的同班女神,无数次悉心热情的帮女神修改代码。" G5 d' I% q$ w/ v) u" }
(教学需要剧情,请不要深究哈)) r2 Q7 ~; b: @2 D2 e

( K; N( U2 [$ j' F有一天,女神又来找新大榭调测程序,二话没说,放下电脑就走了。
$ t+ _8 K& Y" [
% X" m: A7 G( X; L9 ~' I新大榭小哥哥看到代码编辑器上写了一段注释:
1 }3 l# b$ t. Q: }' k
  1. '''( B1 Z- I; l" O$ O) d8 }
  2. 想和我出去约会吗?! |1 Z5 ]4 u5 |
  3. # |5 {1 z5 Z; [/ L; k/ U6 |9 j
  4. 请根据以下线索找出我手机号 1709098xxxx 的后 4 位,并在今晚 21:00 前短信告诉我集合地方~
    . [9 y! F2 w- ]% E$ W

  5. 0 D9 m2 v, u9 r% J
  6. ##前两位数字相同
    ! V, R4 B! P7 i: ?2 d. }5 z
  7. ##后两位数字相同,但与前两位不同/ y- A9 |+ H& f( i
  8. ## 4 位数字刚好是一个整数的平方
复制代码
看到这里,新大榭小哥哥心头小鹿乱撞!
& j: K/ c4 h: V" M) k& b1 G% J9 g
想到女神那甜蜜的微笑,仿佛一股清凉的泉水从他心中流过...
8 D( u+ Z& Z/ H/ o( S
7 M; z! y4 {% f4 c喜悦和躁动涌进了他的心中,心仿佛荡漾在春水里。
2 P1 n- r: i- i$ b9 v0 e
/ i" @; e, J& m0 v+ K0 p那颗心乐得快要盛不下蜜糖般的喜悦!!!, F. ^# j' ~$ h% f  a2 H) l6 L9 S3 B+ Y

( n( j* Q" |- H! ^一看手表,还有 20min,既然如此,只能来撸代码了!+ D" U: d# h4 ]. v. x4 |

( ]4 a  m2 E8 s, T: C& A按照女神的要求,其实就是找到一个前两位数相同、后两位数相同且相互间又不同的4位整数。# k# \. v  v" ^1 C2 J

4 @& F7 d1 M8 E* X( T然后判断该整数是否是另一个整数的平方!
3 T! B8 M9 [/ V7 Y$ H1 `
7 Z; x/ r9 o! I5 t% w即求一个 4 位数 abcd,满足下面的条件( abcd 均属于[0,9]):

3 M4 I; u8 H( \7 y& ~5 w+ K- a) M. M
7412_01.jpg ( Y, ?& P) u, ?, d( ~4 I$ j, G
* o2 a1 C2 W" U8 \& M- p( d
其中由注释可知,abcd,又各自相等。% r0 O, I& [$ R' l/ A# H2 Z1 q

  y! H. \. B, D公示有了,最简单粗暴方式还是用 穷举法,一个一个试,答案很快就会浮出水面!
0 o) L5 I9 [& ?# ~* Y3 c新大榭此时心中想起一句名言:

: N) B; I! D. c( z$ ^# \9 G
做好流程图,程序立刻出~
首先设计双层循环穷举出所有由前两位数和后两位数组成的四位数。
) q8 Q. }4 O- d* B( H% P; z9 [; _: J$ Q  J, T
然后在最内层穷举出所有平方后结果为四位的数,最后判断该数是否符合总条件,符合则打印答案。( d" x9 o( S, \! q& P, B$ u& p

* }' l, O1 n* k9 i, A) h流程图参上
(点击看大图)+ g) R8 R' ?. U

% A/ s- z; T4 N+ J 7412_02.jpg
. A6 C" ~/ b$ R/ B2 ], c" d; @/ u& p
写流程图时新大榭发现找整数时,不一定从1开始,因为女神手机号只能是四位!
# o+ u3 Q2 W  f7 n
" \6 Y+ e. Y3 \+ r2 D( b00xx,这样根本无法满足条件。3 \+ k5 \3 ]  h- `' U; F+ F, H6 ?
. q/ z4 j  _6 |( f) K/ c9 t
既然如此是四位数,那么它的平方根只能是从 3499 之间!(为什么?
1 h/ F3 @  W! b3 b; ]7 w9 N! f0 n. j3 s: b; F. F$ L' {1 U
如果用上一讲的 while 循环来写,代码就是:
3 h! \& h' J& y
  1. i = 1( X. x0 G1 r6 P+ }- R$ F) v
  2. while i <= 9:0 h/ ], v2 s" @0 }
  3.     j = 0
    2 i' f2 N  ~: S1 C7 z; Y
  4.     while j <= 9:1 A! m% x! _% K  G
  5.         if(i != j):
    , `" M0 @0 d0 |2 O
  6.             k = 1000*i+100*i+10*j+j
    7 t! }' D/ G8 Z  H
  7.             t = 34
    ; C" }. R$ y# f  @% j2 _- J, {
  8.             while t <= 99:
    1 n+ _+ ?: ?' e: ]4 s
  9.                 if(k == t*t):
      d+ m# o) y! c
  10.                     print(k)! L+ J0 e! e# j4 e
  11.                 t += 1
    # J! W! T& `: v7 C
  12.         j += 1
    # l5 S& z. q* \6 ]) p: ^9 K2 V( ^- [
  13.     i += 1
复制代码
0 h. n6 o4 O+ Z3 Q$ s4 _8 q
while 循环我们都用了这么久,还可以用更省心的 for 循环噢!
+ H: g( a+ @8 V4 O. i: P, T
7 M- A: H! b( @0 V: @4 C/ E* E将上面的 while 条件以及 +1 条件,统一用 for () in range() 替换。
' g: x$ A' E) U" L4 F4 M
4 ?& F" X9 f$ R5 y所以流程图中所有 while 都可以修改 ,并且最后的 for 循环条件就是 (34,100)
* `& v+ k2 N9 ^, [% p
  1. for t in range(34, 100)
复制代码
代码分分钟搞定了,看下结果:; A* \0 P' @! w& v5 i0 j
. n3 S* @% O5 P! P

& h2 K8 u$ j8 Q9 h; d% {5 x) H$ R
抬手看表,刚刚 20:50,赶紧发短信:
) D! @9 l1 W0 L  z5 T; Y( |
- J4 i) o. ~+ t! S$ ]2 R
女神我们晚上去......
0 T/ `) ~+ |- O4 q
哈哈哈,让我们祝新大榭小哥哥幸福吧~~  L" x: P, _& U4 z5 n; _# K

" e+ Y/ a; c6 z# Y, ~: d源代码(程序那么简单,先自己动手写!稍后老师附参考答案):

1 L0 O: |8 Y& ^) |% a
  1. '''. L. H2 t/ N# V; _9 Q: b& P" c
  2. Team: 新大榭" D3 Z0 Q7 E+ L) S- x3 e
  3. Author: 张黎斌8 \  [0 l4 a+ s0 W/ ?8 ^/ a& Z
  4. update: 2021-07-14, q/ {$ {! E+ D% C5 m, K, r
  5. Level: A
    3 y) ^1 d, \' _& w& ]# H3 O5 C1 y% C- j

  6. ' V! Q4 O. L$ H
  7. 想和我出去约会吗?
    / @, r) `1 x% F0 u& ?$ t
  8. 请根据以下线索找出我的手机号1709098XXXX 的后四位* U/ @8 a* _+ ^5 f4 [2 L. ~; W3 H
  9. ; m, w4 u, g0 N" P9 E8 l! {
  10. 线索1:前两位数字相同
    + s8 a' p3 j( i/ {' g+ [# u
  11. 线索2:后两位数字也相同,但与前两位不同
    0 B" r" h9 |# J4 v
  12. 线索3:这四位数刚好是一个整数的平方
    0 L6 q( X6 Q$ z7 K/ b' _0 F
  13. '''
    * a1 H# A/ F* d' }8 p
  14. for i in range(10):
    % l2 N  t6 l0 q, o: J
  15.     for j in range(10):
      c0 y3 h8 S: O' e. e9 e) H6 c
  16.         if i != j:& F/ T) n  \$ Z9 Z* T# m  ^) F
  17.             k = 1000*i + 100*i + 10*j + j
    2 D6 O. X5 R$ k( ?
  18.             for temp in range(34,100):  # 为什么 34<=temp<100 #因为四位数范围为1100~9988
    " F0 _% }* T7 {. i+ F/ d# P
  19.                 if temp*temp == k:
    4 g$ ^  a5 @; b7 M- J. z
  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 | 显示全部楼层
下面我们来看看新大榭网校学哥学姐的作业答案吧~ 例如:
& K' ~( r8 D1 [, M. c1 i
  1. import math
    ' }% N/ k9 n) F7 S/ B/ s) r9 Z' ^

  2. % a0 T( E% f8 I3 |6 }
  3. for x in range(1, 10):
    ; K$ j2 l" O3 y( E% |
  4.     for y in range(10):) G  h; Z) I1 j
  5.         if x != y:
    3 N9 U( X5 C2 E/ \2 W9 J
  6.             num = x * 1000 + x * 100 + y * 10 + y
    0 _3 d0 M3 K0 Y7 I
  7.             if math.sqrt(num) % 1 == 0:
    8 D9 x) M2 w; c- M& k
  8.                 print(num)
复制代码
再如:+ x' y4 [. @0 r6 r, M. m
  1. for x in range(10):
    8 I" ~" M6 i! l. D3 X3 q$ s
  2.     for y in range(10):/ Q) o7 h& X$ f/ D8 h' ]
  3.         for z in range(32,100):7 ?# L1 N4 w, |0 a% p/ O; R2 _8 S# Y
  4.             k = int(f'{x}{x}{y}{y}')# R3 c. I3 H( S# U% g5 Q* y0 b
  5.             if x != y and z * z == k:0 L8 i0 O9 D$ E6 j) U
  6.                 print('号码后四位是', k)
复制代码
还有这样的:
) I- g  D# e1 k
  1. for i in range(32,99):
    : K) S' D$ |( X5 ~1 N
  2.     num = pow(i,2)
    , h' ]$ d- S6 E) W5 r1 |
  3.     if num%10==int(num%100/10) and int(num/1000)==int(num/100)%10 and (num%10)!=int(num/1000):
    : H6 r5 ]# O/ q! r( |
  4.         print(num)
复制代码
还有那样的:
- Z9 Z. q3 O& R; ?8 {
  1. for i in range(1,10):: w6 W" }+ S9 t) u# s  N
  2.     for j in range(1,10):
    / T4 H' n0 U( [" A* d) I" D
  3.         if i != j and pow(i*1000+i*100+j*10+j, 0.5)%1==0:" h9 X; k/ i0 ^" O
  4.             print(i,i,j,j)
复制代码
你更支持那位学哥学姐呢?欢迎评论区留言~ 下课....
:更多公益课程欢迎注册新大榭论坛在线学习!会员级别越高,福利越多!
新大榭Python学习社区培训、Excel业务指导、办公软件定制、网站建设;新大榭探索实验室欢迎您!http://lab.daxie.net.cn/
新大榭官方公益帮帮群:6603298 官方Excel学习交流群:82064486  欢迎您加入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-18 12:58 , Processed in 0.129165 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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