鱼C论坛

 找回密码
 立即注册
查看: 2235|回复: 11

[已解决]编程

[复制链接]
发表于 2017-5-14 14:26:30 | 显示全部楼层 |阅读模式

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

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

x
temp = input('请输入一个整数:')
number = int(temp)
while number:
        i = number
        while i:
                print(' ',end = '')
                i = i - 1
                g = number
                while g :
                        print('*',end = '')
                        g = g - 1
                        print()
                        number = number - 1
        
            这样写出的代码有问题,,,,,输出结果是:

     请输入一个整数:5
*
*
*
*
*
             为什么会出现这种情况!
最佳答案
2017-5-18 17:01:11
枫丹白露666 发表于 2017-5-18 12:48
temp = input('请输入一个整数:')
number = int(temp)
while number:
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. while number:
  4.         i = number
  5.         while i:
  6.                 print(' ',end = '')
  7.                 i = i - 1
  8.         g = number
  9.         while g :
  10.                 print('*',end = '')
  11.                 g = g - 1
  12.         print()
  13.         number = number - 1
复制代码

请注意while循环层次的问题。
你的编程逻辑是先判断数字是多少 ,然后根据数字来循环打印空格, 在空格之后循环打印*号 然后换行 数字-1 对吧?
所以 while i 循环 和while g 循环应该是在同一层次的 不要把while g  放在 while i 里面了
先循环打印空格  while 循环结束后 ,执行循环打印*号 ,然后在换行 ,同时 nunber-1
代码如上 只是修改了一下缩进 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-14 16:25:05 | 显示全部楼层
本帖最后由 yongxi 于 2017-5-14 16:26 编辑

首先,不太明白楼主这段代码想要的结果是什么。

分析一下:
while i:
                print(' ',end = '')
                i = i - 1
这一段代码意义为: i>0 的时候 打印空格,然后以空格替换换行符
while g :
                        print('*',end = '')
                        g = g - 1
                        print()
这一段代码的意义为: g>0的时候 打印*好 ,然后以空格替换换行符,然后什么都不打印,然后就换行了

纵观整段代码 number = i = g  
因此 你输入 5  那就是  空格+空格+*+空格+换行  这样打印5行。

我猜测一下,楼主是想下面这种效果么?
*****
****
***
**
*
如果是  print('*',end = '')  改成 print('*' *g ,end=' ' )
还有既然 number= i = g, 说明楼主需要多次使用用户输入的整数,么那为何要定义这么多变量名?他们实际都是指向一个数字的, 而且每次循环都是i -1 g-1 number-1  所以不用定义i 和 g  直接使用number 取消掉2多余的循环 只留一个 如下:
temp = input('请输入一个整数:')
number = int(temp)
while number:
        print(' ','*',end = '')
        number -= 1
这样输出的结果和楼主输出的结果是一样的


重点:  以后楼主提问 请务必按照代码格式粘贴代码,格式如小甲鱼课后作业里面一样  。 提问一定说明你想要代码实现的东西,不然鱼油们没法猜你想要的效果。就无法分析代码哪里有问题

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-5-15 13:13:52 | 显示全部楼层
yongxi 发表于 2017-5-14 16:25
首先,不太明白楼主这段代码想要的结果是什么。

分析一下:

嗯对,我会注意的复制代码的问题,,,,,我想要的结果就是你猜测的
     
   如何才能变成这种结果呢?
     

              temp = input('请输入一个整数:')
number = int(temp)
while number:
        print(' ','*',end = '')
        number -= 1
  按照你写的这个,我刚刚试了一下,如果输入5,结果是*****,都在一行
   
    我的temp = input('请输入一个整数:')
number = int(temp)
while number:
        i = number
        while i:
                print(' ',end = '')
                i = i - 1
                g = number
                while g :
                        print('*',end = '')
                        g = g - 1
                        print()
                        number = number - 1

  输出结果是
*
*
*
*
*
                  


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

使用道具 举报

发表于 2017-5-15 14:59:14 | 显示全部楼层
枫丹白露666 发表于 2017-5-15 13:13
嗯对,我会注意的复制代码的问题,,,,,我想要的结果就是你猜测的
     
   如何才能变成这种结果呢 ...

是想问为什么每输出一个 *号 都有换行么?
那就把这个循环里面的print()这句去掉
  1. while g :
  2.     print('*',end = '')
  3.     g = g - 1
  4.     print()
  5.     number = number - 1
复制代码

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

使用道具 举报

发表于 2017-5-15 17:33:00 | 显示全部楼层
本帖最后由 yongxi 于 2017-5-15 17:34 编辑
枫丹白露666 发表于 2017-5-15 13:13
嗯对,我会注意的复制代码的问题,,,,,我想要的结果就是你猜测的
     
   如何才能变成这种结果呢 ...

  1. a = int(input('请输入一个整数:'))

  2. while a :
  3.     print("*" * a )
  4.     a -= 1
复制代码

兄弟 别定义这么多变量  就我这么写 就可以了。
打印内容最后面加上  ,end=' '     就表示用空格代替换行  不加的话 就自动换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-18 12:48:17 | 显示全部楼层
yongxi 发表于 2017-5-15 17:33
兄弟 别定义这么多变量  就我这么写 就可以了。
打印内容最后面加上  ,end=' '     就表示用空格代 ...

temp = input('请输入一个整数:')
number = int(temp)
while number:
        i = number
        while i:
                print(' ',end = '')
                i = i - 1
                g = number
                while g :
                        print('*',end = '')
                        g = g - 1
                        print()
                        number = number - 1
   

如果把print()去掉的话,输出结果是*****    还是一行,,,而不是
*****
****
***
**
*
     

  我还是有点不太明白,你把代码完整写一遍好吗?   


   就按我的这种代码进行改进,,,你说的不要定义太多变量,,,,我不明白   ,,,先把这种方法学会吧?   


  不好意思!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-18 17:01:11 | 显示全部楼层    本楼为最佳答案   
枫丹白露666 发表于 2017-5-18 12:48
temp = input('请输入一个整数:')
number = int(temp)
while number:
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. while number:
  4.         i = number
  5.         while i:
  6.                 print(' ',end = '')
  7.                 i = i - 1
  8.         g = number
  9.         while g :
  10.                 print('*',end = '')
  11.                 g = g - 1
  12.         print()
  13.         number = number - 1
复制代码

请注意while循环层次的问题。
你的编程逻辑是先判断数字是多少 ,然后根据数字来循环打印空格, 在空格之后循环打印*号 然后换行 数字-1 对吧?
所以 while i 循环 和while g 循环应该是在同一层次的 不要把while g  放在 while i 里面了
先循环打印空格  while 循环结束后 ,执行循环打印*号 ,然后在换行 ,同时 nunber-1
代码如上 只是修改了一下缩进 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-18 18:07:35 | 显示全部楼层
  1. while i:
  2.                 print(' ',end = '')
  3.                 i = i - 1
  4.                 g = number
  5.                 while g :
  6.                         print('*',end = '')
  7.                         g = g - 1
  8.                         print()
  9.                         number = number - 1
复制代码

虽然这块代码你看似用了循环,但你每次循环只是打印一次空格,一次 * 号, 应该是打印 空格完了再大印对应数量的 * 号。
另外,你可以标注这是哪节课的哪个题,方便大家查找,知道你想要得到什么结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-19 13:39:56 | 显示全部楼层
薄荷的琦姑娘 发表于 2017-5-18 18:07
虽然这块代码你看似用了循环,但你每次循环只是打印一次空格,一次 * 号, 应该是打印 空格完了再大印对 ...

恩好的  ,,,这道题是第四讲的课后习题2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-19 13:50:42 | 显示全部楼层
yongxi 发表于 2017-5-18 17:01
请注意while循环层次的问题。
你的编程逻辑是先判断数字是多少 ,然后根据数字来循环打印空格, 在空 ...

在第四讲的课后习题中的答案给出的是
temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1
    while i:
        print(' ',end = '')
        i = i - 1
    g = number
    while g:
        print('*',end = '')
        g = g - 1
    print()
    number = number - 1


     i = number - 1

这个和你写的只有这不一样,,但是打印结果是一样的。


   这是为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-19 18:11:51 | 显示全部楼层
枫丹白露666 发表于 2017-5-19 13:50
在第四讲的课后习题中的答案给出的是
temp = input('请输入一个整数:')
number = int(temp)

结果不一样, 参考答案前面的空格比我这个要少一个。  你仔细看看就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 20:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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