鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: ooxx7788

[技术交流] Python: 每日一题 62

[复制链接]
发表于 2017-6-13 13:50:42 | 显示全部楼层

他的要求是不要在函数里面打印,结果是用来返回的,不是用来打印的,这是这个题目唯一值得思考的地方
return结果比print难一些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-13 13:52:08 | 显示全部楼层
SixPy 发表于 2017-6-10 01:12
str自带 center 方法,何必舍近求远~


这个厉害了,你这么一说我就想起来 ,str的确自带了居中的这个方法,
这都能想到,厉害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-17 19:58:23 From FishC Mobile | 显示全部楼层
  1. def diamond(n):
  2.     m=1
  3.     a=[]
  4.     if n<0 or n%2==0:
  5.         return None
  6.     else:
  7.         while m<n:
  8.             a.append('  '*((n-m)//2)+'*'*m+'  '*((n-m)//2))
  9.             m+=2
  10.         else:
  11.             while m>0:
  12.                 a.append('  '*((n-m)//2)+'*'*m+'  '*((n-m)//2))
  13.                 m-=2
  14.     return '\n'.join(a,)
  15. print(diamond(17))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-25 19:41:13 | 显示全部楼层
利用 y=|x| 函数的特性,正是空格的规律
  1. def diamond(n):
  2.     """diamond(n) -> str, print diamond which sized n (integer)"""
  3.     if n<=0 or n%2==0:
  4.         return None
  5.     else:
  6.         result = ""
  7.         for i in range(-(n-1)//2,(n+1)//2): # 利用函数 y=abs(x)
  8.             result += " "*abs(i)+"*"*(n-abs(i)*2)+"\n" # 空格数+星号数
  9.         return result
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 10:58:49 | 显示全部楼层
  1. def diamond(x):
  2.     if x < 0 or x % 2 == 0:
  3.         return None
  4.     else:
  5.         for i in range(1, x//2+2):
  6.             print(' ' * (8-i) + '*' * (2*i-1))
  7.         for i in range(x//2+1, x+1):
  8.             print(' ' * abs(7-i) + '*' * (x - 2*(i-7)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 00:59:20 | 显示全部楼层
  1. def func(num):
  2.     flag, status = 1, 2
  3.     while flag > 0:
  4.         print('{0:^{1}}'.format('*'*flag,num))
  5.         flag += status
  6.         if flag >= num: status = -2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 16:48:11 | 显示全部楼层
n = int(input("please enter one number:"))
if n % 2 ==0 or n < 0:
    print("please enter odd number")
else:
    x = 1
    z = int((n-1)/2)
    y = 1
    while True:
        print(" "*z,"*"*x,end ="\n" )
        x = x + 2
        z = z - 1
        if x > n:
            break
    while True:
        print(" "*y,"*" * (n-2),end = "\n")
        y = y + 1
        n = n - 2
        if n < 0:
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-11 21:56:00 | 显示全部楼层
  1. def diamond(n):
  2.         if n % 2 == 0 or n < 0:
  3.                 return None
  4.         else:
  5.                 s = ''
  6.                 for i in range(n // 2 + 1):
  7.                         s += (n // 2 - i) * ' ' + (2 * i + 1) * '*' + '\n'
  8.                 for k in range(n // 2):
  9.                         s += (k + 1) * ' ' + (n - 2 - 2 * k) * '*' + '\n'
  10.                 return s
  11. print(diamond(21))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2018-7-31 15:31:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-14 17:11:57 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-14 17:22:20 | 显示全部楼层
  1. def fun62(num):
  2.     str1 = ""
  3.     if not num%2 or num < 0:
  4.         return None
  5.     for each in range(1,num+3):
  6.         if each < (num+3)//2:
  7.             star = 2 * each - 1
  8.         else:
  9.             star = 2 * (num - each) + 1
  10.         str1 += " " * ((num-star)//2) + "*" * star + "\n"
  11.     return str1

  12. print(fun62(15))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-14 17:23:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-2 13:15:02 | 显示全部楼层
看着简单,其实不简单。
  1. def pstars(n):
  2.     if n < 0 or n % 2 == 0:
  3.         return None
  4.     for i in range(1, int((n+3)/2)):
  5.         print(' '*(n-i-2) + '*'*(2*i-1) + ' '*(n-i-2))
  6.     for j in range(int((n+3)/2), n+1):
  7.         print(' '*(j-3) + '*'*(2*n-2*j+1) + ' '*(j-3))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-17 09:44:12 | 显示全部楼层
不知道为啥是歪的
  1. def diamond(num):
  2.           if num%2 == 0 or num <0:
  3.                     return None
  4.           result =[]
  5.           new_result = []
  6.           a = num // 2 + 1
  7.           max_num = 2*a +1
  8.           m_num = max_num//2
  9.           for each in range(1,max_num,2):
  10.                     result.append(each)
  11.           for each in range(max_num,0,-2):
  12.                     result.append(each)
  13.           for each in result:
  14.                     print(' '*((max_num-each)//2),end='')
  15.                     for i in range(each):
  16.                               print('*',end='')
  17.                     print()

  18. diamond(15)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-29 00:32:10 | 显示全部楼层
膜拜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 17:46:06 | 显示全部楼层
import nummpy

def diamond(num):
   pass



if n % 2 != 0 or n >= 0:
    num = int(input('请输入奇数:'))
    print(diamond(num))
else:
    num = int(input('请重新输入奇数: '))
    print(diamond(num))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 14:38:03 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 07:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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