鱼C论坛

 找回密码
 立即注册
查看: 1504|回复: 4

[已解决]005课改的之前作业,初始输入0,怎么放进循环里,,再复制一遍?

[复制链接]
发表于 2021-12-5 17:57:24 | 显示全部楼层 |阅读模式

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

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

x
print("星星射线")
shuzi = input("请输入一个整数(1-16)\n")
guess=int(shuzi)
if guess!=0:
    while guess!=0:
        if shuzi.isdigit() and guess>0:
            guess=int(shuzi)
            if guess<=16:
                while guess>0:
                    print(" "*guess+"*"*guess)
                    guess = guess-1
            else:
                print("数字大了,我怕卡")
                shuzi = input("请输入一个整数(1-16)\n")
        else:
            print("你看看你都干了些啥")
            shuzi=input("再给你一次机会,别毁了这个家\n请输入一个整数(1-16)\n")
    else:
        print("结束啦")
else:
    print("输个0你是要看烟花?")
最佳答案
2021-12-5 18:26:43
本帖最后由 jackz007 于 2021-12-5 18:32 编辑
  1. print("星星射线")
  2. while True:
  3.     shuzi = input("请输入一个整数(1 - 16) : ")
  4.     try:
  5.         guess = int(shuzi)
  6.         if 0 < guess < 17:
  7.             for x in range(guess , 0 , -1):
  8.                 print(' ' * (x - 1) + '*' * x)
  9.             break
  10.         else:
  11.             print("输个 0 你是要看烟花?") if guess == 0 else print("数字大了,我怕卡")
  12.     except:
  13.         print("你看看你都干了些啥")
  14.         print("再给你一次机会,别毁了这个家")
  15. print("结束啦")
复制代码

        运行实况:
  1. D:\00.Excise\Python>python x.py
  2. 星星射线
  3. 请输入一个整数(1 - 16) : 22
  4. 数字大了,我怕卡
  5. 请输入一个整数(1 - 16) : 17
  6. 数字大了,我怕卡
  7. 请输入一个整数(1 - 16) : 0
  8. 输个0你是要看烟花?
  9. 请输入一个整数(1 - 16) : aq
  10. 你看看你都干了些啥
  11. 再给你一次机会,别毁了这个家
  12. 请输入一个整数(1 - 16) : 12
  13.            ************
  14.           ***********
  15.          **********
  16.         *********
  17.        ********
  18.       *******
  19.      ******
  20.     *****
  21.    ****
  22.   ***
  23. **
  24. *
  25. 结束啦

  26. D:\00.Excise\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-5 18:26:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-12-5 18:32 编辑
  1. print("星星射线")
  2. while True:
  3.     shuzi = input("请输入一个整数(1 - 16) : ")
  4.     try:
  5.         guess = int(shuzi)
  6.         if 0 < guess < 17:
  7.             for x in range(guess , 0 , -1):
  8.                 print(' ' * (x - 1) + '*' * x)
  9.             break
  10.         else:
  11.             print("输个 0 你是要看烟花?") if guess == 0 else print("数字大了,我怕卡")
  12.     except:
  13.         print("你看看你都干了些啥")
  14.         print("再给你一次机会,别毁了这个家")
  15. print("结束啦")
复制代码

        运行实况:
  1. D:\00.Excise\Python>python x.py
  2. 星星射线
  3. 请输入一个整数(1 - 16) : 22
  4. 数字大了,我怕卡
  5. 请输入一个整数(1 - 16) : 17
  6. 数字大了,我怕卡
  7. 请输入一个整数(1 - 16) : 0
  8. 输个0你是要看烟花?
  9. 请输入一个整数(1 - 16) : aq
  10. 你看看你都干了些啥
  11. 再给你一次机会,别毁了这个家
  12. 请输入一个整数(1 - 16) : 12
  13.            ************
  14.           ***********
  15.          **********
  16.         *********
  17.        ********
  18.       *******
  19.      ******
  20.     *****
  21.    ****
  22.   ***
  23. **
  24. *
  25. 结束啦

  26. D:\00.Excise\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-6 09:48:24 | 显示全部楼层

可以,不过有一个小区别,负数的回答不一样了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-6 09:54:51 | 显示全部楼层
本帖最后由 jackz007 于 2021-12-6 10:00 编辑
z714654918 发表于 2021-12-6 09:48
可以,不过有一个小区别,负数的回答不一样了


      那是因为你的代码使用了字符串的 isdigit() 方法来判定数字,而 isdigit() 方法没有将负数纳入数字的范畴,从而导致在输入负值的时候,会被判定为输入了非数字,很显然,这是误判,所以,判断数字用 isdigit() 不是一个好主意。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-6 11:56:42 | 显示全部楼层
jackz007 发表于 2021-12-6 09:54
那是因为你的代码使用了字符串的 isdigit() 方法来判定数字,而 isdigit() 方法没有将负数纳入数 ...

小数负数都不让输,感觉跟输字母一样捣乱,或者转int取正,数字大了情有可原,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 18:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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