鱼C论坛

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

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

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

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

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

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

0. 倒三角
    a.
temp = input('请您输入一个整数:')
        number = int(temp)
        n = number
        while number > 0:
            i = n - number
            while i > 0:
                print(' ', end = '')
                i -= 1
            j = number
            while j > 0:
                print('* ', end = '')
                j -= 1
            print()
            number -= 1
          【第11行 * 后面有一个空格~】

@RSM4LNRNUF4GA$SE})3.png
       
    b.
temp = input('请您输入一个整数:')
        number = int(temp)
        n = number
        while number > 0:
            i = n - number
            while i > 0:
                print(' ', end = '')
                i -= 1
            j = number * 2 - 1
            while j > 0:
                print('*', end = '')
                j -= 1
            print()
            number -= 1
        【j = number * 2 - 1,而不是 '*' ,此刻的 '*' 是字符串,可以*2,但不能 - 1,这是不同的数据类型】

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

       
1. 燕尾角(小甲鱼课后习题的对称版)
temp = input('请输入一个整数:')
        number = int(temp)
        n = number
        while number > 0:
                i = n - number
                while i > 0:
                    print(' '* 2, end = '')
                    i -= 1
                j = number
                if number == 1:
                    print('*')
                else:
                    while j > 0:
                        print('*', end = '')
                        j -= 1
                    k = (number - 1) * 2 - 1
                    while k > 0:
                        print(' ', end = '')
                        k -= 1
                    l = number
                    while l > 0:
                        print('*', end = '')
                        l -= 1    
                    print()
                number -= 1

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

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



2. 进阶版组装游戏
【原版】
import random
counts = 3
secret = random.randint(1,10)
print('——————————————阿黎黎的python分割线———————————————')
name = input('Hi, 好久不见啊~,既然来了就留下你的名字吧:')
print(name + '你好啊!一起来玩个游戏吧。猜猜我现在心里\
想的是哪个数字吧,从1-10,只有三次机会哦(*^__^*)')
print('请输入你的答案吧:', end = '')
while counts > 0:
    guess = input()
    number = int(guess)
    if (number > 10) or (number <= 0):
        print('看,又调皮了吧,不是说好了是1-10嘛(⊙o⊙)…')
        print('这次就先原谅你啦,再试一次吧~')
    else:
        counts -= 1
        if number == secret:
            while secret > 0:
                i = number - secret
                while i > 0:
                    print(' '* 2, end = '')
                    i -= 1
                j = secret
                if secret == 1:
                    print('*')
                else:
                    while j > 0:
                        print('*', end = '')
                        j -= 1
                    k = (secret - 1) * 2 - 1
                    while k > 0:
                        print(' ', end = '')
                        k -= 1
                    l = secret
                    while l > 0:
                        print('*', end = '')
                        l -= 1    
                    print()
                secret -= 1
            print('哎呦!不错哦!这么久没见,还能猜中本姑娘心中所想,\
    给你一个么么哒好了~')
            break
        else:
            if counts > 0:
                if number > secret:
                    print('嘿嘿,大了哦,你还有',counts,'次机会(⊙v⊙)')
                    print('再试一次吧:', end = '')
                else:
                    print('嘻嘻,小了哦,你还有',counts,'次机会(⊙v⊙)')
                    print('再试一次吧:', end = '')
            else:
                print('╮(╯▽╰)╭,机会用光了,你居然没猜出来~~~~(>_<)~~~~,心塞塞的')
print('o啦o啦,游戏结束了,不玩啦,( ^_^ )/~~拜拜')
【和小甲鱼的不同】
1. 没有guess=0。
guess = 0,是变量的初始化,用于while循环之前。

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



【改进版】
import random
counts = 3
secret = random.randint(1,10)
print('——————————————阿黎黎的python分割线———————————————')
name =input('Hi~,好久不见啊~既然来了就留下你的名字吧:')
print(name + '你好啊!一起来玩个游戏吧。猜猜我现在心里想的是哪个数字吧,\
从"1-10",只有三次机会哦(*^__^*)')
print('请输入你的答案吧:', end = '')
while counts > 0:
    guess = input()
    number = int(guess)
    if (number > 10) or (number <= 0):
        print('看,又调皮了吧,不是说好了是1-10嘛(⊙o⊙)…')
        print('这次就先原谅你啦,再试一次吧~')
    else:
        counts -= 1
        n = secret
        if number == n:
            while n > 0:
                i = number - n
                while i > 0:
                    print(' '* 2, end = '')
                    i -= 1
                j = n
                if n == 1:
                    print('*')
                else:
                    while j > 0:
                        print('*', end = '')
                        j -= 1
                    k = (n - 1) * 2 - 1
                    while k > 0:
                        print(' ', end = '')
                        k -= 1
                    l = n
                    while l > 0:
                        print('*', end = '')
                        l -= 1    
                    print()
                n -= 1
            print('哎呦!不错哦!这么久没见,还能猜中本姑娘心中所想,\
    给你一个么么哒好了~')
            break
        else:
            if counts > 0:
                if number > secret:
                    print('嘿嘿,大了哦,你还有',counts,'次机会(⊙v⊙)')
                    print('再试一次吧:', end = '')
                else:
                    print('嘻嘻,小了哦,你还有',counts,'次机会(⊙v⊙)')
                    print('再试一次吧:', end = '')
            else:
                print('╮(╯▽╰)╭,机会用光了,你居然没猜出来~~~~(>_<)~~~~,心塞塞的')
print('o啦o啦,游戏结束了,不玩啦,( ^_^ )/~~拜拜')
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-11-24 15:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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