鱼C论坛

 找回密码
 立即注册
查看: 2597|回复: 6

[技术交流] 004讲 - 自我扩展的代码实战

[复制链接]
发表于 2017-7-5 11:04:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
本帖最后由 阿黎黎 于 2017-7-5 11:33 编辑

0. 倒三角
    a.
  1. temp = input('请您输入一个整数:')
  2.         number = int(temp)
  3.         n = number
  4.         while number > 0:
  5.             i = n - number
  6.             while i > 0:
  7.                 print(' ', end = '')
  8.                 i -= 1
  9.             j = number
  10.             while j > 0:
  11.                 print('* ', end = '')
  12.                 j -= 1
  13.             print()
  14.             number -= 1
复制代码

          【第11行 * 后面有一个空格~】

@RSM4LNRNUF4GA$SE})3.png
       
    b.
  1. temp = input('请您输入一个整数:')
  2.         number = int(temp)
  3.         n = number
  4.         while number > 0:
  5.             i = n - number
  6.             while i > 0:
  7.                 print(' ', end = '')
  8.                 i -= 1
  9.             j = number * 2 - 1
  10.             while j > 0:
  11.                 print('*', end = '')
  12.                 j -= 1
  13.             print()
  14.             number -= 1
复制代码

        【j = number * 2 - 1,而不是 '*' ,此刻的 '*' 是字符串,可以*2,但不能 - 1,这是不同的数据类型】

{`FSV4[T`}FKXQ8{[N_L]_X.png        
       

       
1. 燕尾角(小甲鱼课后习题的对称版)
  1. temp = input('请输入一个整数:')
  2.         number = int(temp)
  3.         n = number
  4.         while number > 0:
  5.                 i = n - number
  6.                 while i > 0:
  7.                     print(' '* 2, end = '')
  8.                     i -= 1
  9.                 j = number
  10.                 if number == 1:
  11.                     print('*')
  12.                 else:
  13.                     while j > 0:
  14.                         print('*', end = '')
  15.                         j -= 1
  16.                     k = (number - 1) * 2 - 1
  17.                     while k > 0:
  18.                         print(' ', end = '')
  19.                         k -= 1
  20.                     l = number
  21.                     while l > 0:
  22.                         print('*', end = '')
  23.                         l -= 1   
  24.                     print()
  25.                 number -= 1
复制代码

        【通过这个代码,我体会到了while n的不可取性,毕竟除了false,0或者空,其他的都为真,“k = (number - 1) * 2 - 1”如果不在while k > 0 的条件下运行的话,会导致程序的无限运行,虽然也能将图形显示出来,但终究存在大bug。】

Q{OATU``%)(DD70(ES[]1BL.png        



2. 进阶版组装游戏
【原版】
  1. import random
  2. counts = 3
  3. secret = random.randint(1,10)
  4. print('——————————————阿黎黎的python分割线———————————————')
  5. name = input('Hi, 好久不见啊~,既然来了就留下你的名字吧:')
  6. print(name + '你好啊!一起来玩个游戏吧。猜猜我现在心里\
  7. 想的是哪个数字吧,从1-10,只有三次机会哦(*^__^*)')
  8. print('请输入你的答案吧:', end = '')
  9. while counts > 0:
  10.     guess = input()
  11.     number = int(guess)
  12.     if (number > 10) or (number <= 0):
  13.         print('看,又调皮了吧,不是说好了是1-10嘛(⊙o⊙)…')
  14.         print('这次就先原谅你啦,再试一次吧~')
  15.     else:
  16.         counts -= 1
  17.         if number == secret:
  18.             while secret > 0:
  19.                 i = number - secret
  20.                 while i > 0:
  21.                     print(' '* 2, end = '')
  22.                     i -= 1
  23.                 j = secret
  24.                 if secret == 1:
  25.                     print('*')
  26.                 else:
  27.                     while j > 0:
  28.                         print('*', end = '')
  29.                         j -= 1
  30.                     k = (secret - 1) * 2 - 1
  31.                     while k > 0:
  32.                         print(' ', end = '')
  33.                         k -= 1
  34.                     l = secret
  35.                     while l > 0:
  36.                         print('*', end = '')
  37.                         l -= 1   
  38.                     print()
  39.                 secret -= 1
  40.             print('哎呦!不错哦!这么久没见,还能猜中本姑娘心中所想,\
  41.     给你一个么么哒好了~')
  42.             break
  43.         else:
  44.             if counts > 0:
  45.                 if number > secret:
  46.                     print('嘿嘿,大了哦,你还有',counts,'次机会(⊙v⊙)')
  47.                     print('再试一次吧:', end = '')
  48.                 else:
  49.                     print('嘻嘻,小了哦,你还有',counts,'次机会(⊙v⊙)')
  50.                     print('再试一次吧:', end = '')
  51.             else:
  52.                 print('╮(╯▽╰)╭,机会用光了,你居然没猜出来~~~~(>_<)~~~~,心塞塞的')
  53. print('o啦o啦,游戏结束了,不玩啦,( ^_^ )/~~拜拜')
复制代码

【和小甲鱼的不同】
1. 没有guess=0。
guess = 0,是变量的初始化,用于while循环之前。

2. while去掉了guess != secret, 改用了break作为跳出循环的方式。
这里secret有两层意思,一层是要猜的数,一层又是*号打印时的变量,而且while循环之前也没有定义guess。



【改进版】
  1. import random
  2. counts = 3
  3. secret = random.randint(1,10)
  4. print('——————————————阿黎黎的python分割线———————————————')
  5. name =input('Hi~,好久不见啊~既然来了就留下你的名字吧:')
  6. print(name + '你好啊!一起来玩个游戏吧。猜猜我现在心里想的是哪个数字吧,\
  7. 从"1-10",只有三次机会哦(*^__^*)')
  8. print('请输入你的答案吧:', end = '')
  9. while counts > 0:
  10.     guess = input()
  11.     number = int(guess)
  12.     if (number > 10) or (number <= 0):
  13.         print('看,又调皮了吧,不是说好了是1-10嘛(⊙o⊙)…')
  14.         print('这次就先原谅你啦,再试一次吧~')
  15.     else:
  16.         counts -= 1
  17.         n = secret
  18.         if number == n:
  19.             while n > 0:
  20.                 i = number - n
  21.                 while i > 0:
  22.                     print(' '* 2, end = '')
  23.                     i -= 1
  24.                 j = n
  25.                 if n == 1:
  26.                     print('*')
  27.                 else:
  28.                     while j > 0:
  29.                         print('*', end = '')
  30.                         j -= 1
  31.                     k = (n - 1) * 2 - 1
  32.                     while k > 0:
  33.                         print(' ', end = '')
  34.                         k -= 1
  35.                     l = n
  36.                     while l > 0:
  37.                         print('*', end = '')
  38.                         l -= 1   
  39.                     print()
  40.                 n -= 1
  41.             print('哎呦!不错哦!这么久没见,还能猜中本姑娘心中所想,\
  42.     给你一个么么哒好了~')
  43.             break
  44.         else:
  45.             if counts > 0:
  46.                 if number > secret:
  47.                     print('嘿嘿,大了哦,你还有',counts,'次机会(⊙v⊙)')
  48.                     print('再试一次吧:', end = '')
  49.                 else:
  50.                     print('嘻嘻,小了哦,你还有',counts,'次机会(⊙v⊙)')
  51.                     print('再试一次吧:', end = '')
  52.             else:
  53.                 print('╮(╯▽╰)╭,机会用光了,你居然没猜出来~~~~(>_<)~~~~,心塞塞的')
  54. print('o啦o啦,游戏结束了,不玩啦,( ^_^ )/~~拜拜')
  55. input('按enter键退出')
复制代码


secret只有一个意思了,可以套用小甲鱼的代码了。

评分

参与人数 2鱼币 +8 收起 理由
小甲鱼 + 4
康小泡 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-5 11:48:44 | 显示全部楼层
有意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-5 11:49:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-5 14:17:59 | 显示全部楼层
厉害了,我想好久呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-5 14:34:00 | 显示全部楼层
楼主举一反三思维好敏捷,我这看了代码都要一步步看才明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-5 15:33:10 | 显示全部楼层
Seven007 发表于 2017-7-5 14:34
楼主举一反三思维好敏捷,我这看了代码都要一步步看才明白

其实我只是一时兴起而已,也是一个小白,试了好久,那个倒三角一直没想出来怎么写,第一个是求助来的,然后做了一点改动有的第二个。然后往下推燕尾角,一直报错,试了很久,又去求助了才解决的。小游戏呢是想着做给小伙伴玩的,所以就各种组合,也捯饬了很久,最后还是让人微调了一下,解决了secret双定义的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-7-5 15:37:04 | 显示全部楼层
yjj01 发表于 2017-7-5 14:17
厉害了,我想好久呢

我也想了好久呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 03:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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