鱼C论坛

 找回密码
 立即注册
查看: 3734|回复: 21

[已解决]【Python新手求助】星号递减程序

[复制链接]
发表于 2020-1-25 10:30:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lzymm1 于 2020-1-25 10:41 编辑
temp = input('请输入一个整数:')
number = int(temp)
while number:
    i = number - 1
    while i:
        print(' ', end = '')
        i = i - 1
    j = number
    while j:
        print('*', end = '')
        j = j - 1
    print()
    number = number - 1
它的输出结果是类似输入 6 就输出
     ******
    *****
   ****
  ***
 **
* 
这样的,但是为什么只需要写一个while i 就可以让它打印出 i 的次数,而不需要单独设置变量再乘上去?很不解。
这是我写的程序:
temp = input("请输入一个整数")
result = int(temp)
while result > 0:
    print(" "* result)
    print("*"* result)
    result = result - 1
卡在这里很久了,求大佬帮忙解答一下
最佳答案
2020-1-25 11:03:55
lzymm1 发表于 2020-1-25 11:02
这个不行啊,输入出来没有打斜的

看错了,加上 end=""(不换行)就可以了:
temp = input("请输入一个整数")
result = int(temp)
while result > 0:
    print(" " * result, end="")
    print("*" * result)
    result = result - 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-1-25 10:32:03 | 显示全部楼层
本帖最后由 lzymm1 于 2020-1-25 10:35 编辑

倒数第二行的星号不整齐,应该是对齐下来的帖子里不知道为什么不整齐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-25 10:57:03 | 显示全部楼层
while i 就是当 i 不为 0 时执行循环。假设 i = 6,每执行一次循环体 i 就减 1,那么循环体就会被执行 6 次。

你写的程序也可以。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-25 11:02:40 | 显示全部楼层
zltzlt 发表于 2020-1-25 10:57
while i 就是当 i 不为 0 时执行循环。假设 i = 6,每执行一次循环体 i 就减 1,那么循环体就会被执行 6 次 ...

这个不行啊,输入出来没有打斜的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-25 11:03:55 | 显示全部楼层    本楼为最佳答案   
lzymm1 发表于 2020-1-25 11:02
这个不行啊,输入出来没有打斜的

看错了,加上 end=""(不换行)就可以了:
temp = input("请输入一个整数")
result = int(temp)
while result > 0:
    print(" " * result, end="")
    print("*" * result)
    result = result - 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-25 11:20:54 | 显示全部楼层
其实,这段程序可以缩减成一行(看不懂没关系):
for i in range(int(input("请输入一个整数:")), 0, -1): print(' ' * i + '*' * i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-25 12:08:47 | 显示全部楼层
zltzlt 发表于 2020-1-25 11:03
看错了,加上 end=""(不换行)就可以了:

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

使用道具 举报

 楼主| 发表于 2020-1-25 12:09:29 | 显示全部楼层
zltzlt 发表于 2020-1-25 11:20
其实,这段程序可以缩减成一行(看不懂没关系):

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

使用道具 举报

 楼主| 发表于 2020-1-30 14:57:35 | 显示全部楼层
本帖最后由 lzymm1 于 2020-1-30 15:03 编辑

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

使用道具 举报

 楼主| 发表于 2020-1-30 15:06:38 | 显示全部楼层
zltzlt 发表于 2020-1-25 10:57
while i 就是当 i 不为 0 时执行循环。假设 i = 6,每执行一次循环体 i 就减 1,那么循环体就会被执行 6 次 ...

为什么是当i不为0时执行循环?这个0有什么特殊意义吗?也就是说i=负数的时候它也会执行循环对吧?为什么是0而不是其他数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 15:07:31 | 显示全部楼层
lzymm1 发表于 2020-1-30 15:06
为什么是当i不为0时执行循环?这个0有什么特殊意义吗?也就是说i=负数的时候它也会执行循环对吧?为什么 ...

这是规定,知道就好。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 15:08:22 | 显示全部楼层
zltzlt 发表于 2020-1-25 10:57
while i 就是当 i 不为 0 时执行循环。假设 i = 6,每执行一次循环体 i 就减 1,那么循环体就会被执行 6 次 ...

因为不是很懂,所以我一直把【while i】这类型的理解成【当 i 存在时:】
这样理解的话跟原来的意思会有什么差距吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 15:09:57 | 显示全部楼层
lzymm1 发表于 2020-1-30 15:08
因为不是很懂,所以我一直把【while i】这类型的理解成【当 i 存在时:】
这样理解的话跟原来的意思会有 ...

当然有差距,while i 不是当 i 存在时就执行循环体,while i 是当 i 存在并且它的值为真(即不为 0,在 Python 中 0、0.0、空字符串、None、False 都被视为假)才执行循环体。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 15:32:02 | 显示全部楼层
zltzlt 发表于 2020-1-30 15:09
当然有差距,while i 不是当 i 存在时就执行循环体,while i 是当 i 存在并且它的值为真(即不为 0,在 P ...

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

使用道具 举报

 楼主| 发表于 2020-1-30 15:47:34 | 显示全部楼层
zltzlt 发表于 2020-1-30 15:09
当然有差距,while i 不是当 i 存在时就执行循环体,while i 是当 i 存在并且它的值为真(即不为 0,在 P ...

还有一些像是 int() 我的理解是把括号内的字符串或其他数据作为整数提取,如果其中掺杂了其他非数字的数据,那就无法提取。这种理解对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 15:48:41 | 显示全部楼层
lzymm1 发表于 2020-1-30 15:47
还有一些像是 int() 我的理解是把括号内的字符串或其他数据作为整数提取,如果其中掺杂了其他非数字的数 ...

int() 函数功能就是将括号内的字符串或数据转化成整数类型,你的理解基本是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 15:49:04 | 显示全部楼层
zltzlt 发表于 2020-1-30 15:48
int() 函数功能就是将括号内的字符串或数据转化成整数类型,你的理解基本是对的

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

使用道具 举报

 楼主| 发表于 2020-2-4 14:55:38 | 显示全部楼层
zltzlt 发表于 2020-1-30 15:48
int() 函数功能就是将括号内的字符串或数据转化成整数类型,你的理解基本是对的

import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
# 这里先给guess赋值(赋一个绝对不等于secret的值)
guess = 0
# print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
# 嗯,小甲鱼觉得富有创意的你应该会尝试用 end="JJ"?
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0):
    temp = input()
    guess = int(temp)
    times = times - 1 # 用户每输入一次,可用机会就-1
    if guess == secret:
        print("我草,你是小甲鱼心里的蛔虫吗?!")
        print("哼,猜中了也没有奖励!")
    else:
        if guess > secret:
            print("哥,大了大了~~~")
        else:
            print("嘿,小了,小了~~~")
        if times > 0:
            print("再试一次吧:", end=" ")
        else:
            print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
为什么要在用户输入之前就给guess赋值?我尝试跳过了这一步,程序运行的结果没有任何改变。
import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while times > 0:
    temp = input()
    guess = int(temp)
    times = times - 1 
    if guess == secret:
        print("我草,你是小甲鱼心里的蛔虫吗?!")
        print("哼,猜中了也没有奖励!")
    else:
        if guess > secret:
            print("哥,大了大了~~~")
        else:
            print("嘿,小了,小了~~~")
        if times > 0:
            print("再试一次吧:", end=" ")
        else:
            print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")
是不是说明这一步是多余的?在用户输入前就给guess赋值的目的是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 14:59:41 | 显示全部楼层
lzymm1 发表于 2020-2-4 14:55
为什么要在用户输入之前就给guess赋值?我尝试跳过了这一步,程序运行的结果没有任何改变。

是不是 ...

第一段代码,如果不给 guess 赋值,程序执行到这一步:

while (guess != secret)

就会报错。

PS:以后提问请发提问帖,不要在这里回复。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-4 15:14:42 | 显示全部楼层
zltzlt 发表于 2020-2-4 14:59
第一段代码,如果不给 guess 赋值,程序执行到这一步:

while (guess != secret)

我把这个也删了,我主要是不知道为什么要加个给guess赋值,也就是说这一步是没有必要的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 11:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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