QQ登录

只需一步,快速开始

搜索
鱼C论坛笔记大赛成绩公示
查看: 227|回复: 11

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

[复制链接]
最佳答案
445 
累计签到:661 天
连续签到:36 天
发表于 2017-9-11 18:44:38 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
本帖最后由 冬雪雪冬 于 2017-9-13 07:40 编辑

首先我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 为了让大家独立思考,跟帖改为“回帖仅作者可见”。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
在屏幕上用字符显示一个实心圆。
要求编写函数circle(d): d为直径,以行数计算,为方便编程,d使用偶数。考虑到实际显示中字符行间距大于字间距,横向的字符数可设为纵向的2倍。
1.jpg

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:23 天
连续签到:1 天
发表于 2017-9-11 22:27:17 | 显示全部楼层
  1. def circle(d):
  2.     list_x = [(int((d**2 - y**2)**0.5+0.5))*2 for y in range(0,d,2)]
  3.     list_x = sorted(list_x) + list_x
  4.     for i in list_x:
  5.         print(('*'*i).center(d*2))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:37 天
连续签到:1 天
发表于 2017-9-12 00:23:59 | 显示全部楼层
今天没时间去想了,直接进来学习一下
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
7 
累计签到:10 天
连续签到:1 天
发表于 2017-9-12 09:54:50 | 显示全部楼层
本帖最后由 bush牛 于 2017-9-12 09:55 编辑
  1. import math

  2. def circle(d):
  3.     x = []
  4.     for y in range(d):
  5.         x.append(round(2*math.sqrt((d)**2 - (y)**2)))

  6.     for i in x[::-1]:
  7.         print(' '*(2*d-i)+'*'*i*2)

  8.     for i in x:
  9.         print(' '*(2*d-i)+'*'*i*2)
复制代码

点评

打印的行数是d的两倍  发表于 2017-9-12 20:29

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
2 
累计签到:3 天
连续签到:1 天
发表于 2017-9-12 11:10:37 From FishC Mobile | 显示全部楼层
def circle(d):
    a=0.5
    for i in range(d):
        c=int((((d/2)**2-(d/2-a)**2)**(1/2))*2+0.4)
        x=" "*int((d-c))
        y="*"*c*2
        a+=1
        print("   ",x,y)

circle(14)

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
4 
累计签到:102 天
连续签到:3 天
发表于 2017-9-12 13:22:34 | 显示全部楼层
  1. import math

  2. def circle(d):
  3.     r = d//2

  4.     # top semi-circl
  5.     for i in range(1,r + 1):
  6.         ns = int(math.sqrt(2 * r * i - i * i))
  7.         stars = '*' * (ns * 2 + 1) * 2
  8.         nb = 2* (2 * r - ns)
  9.         blanks = ' ' * nb
  10.         print(blanks + stars)

  11.     #bottom semi-circl
  12.     for i in range(r + 1,0,-1):
  13.         ns = int(math.sqrt(2 * r * i - i * i))
  14.         stars = '*' * (ns * 2 + 1) * 2
  15.         nb = 2* (2 * r - ns)
  16.         blanks = ' ' * nb
  17.         print(blanks + stars)
  18.    
  19. circle(40)
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:250 天
连续签到:5 天
发表于 2017-9-12 21:14:51 | 显示全部楼层
给楼主提个建议:
要不改成多少时间后或者多少楼后公布答案,或者公开大家的回帖,不再奖励

这样没有答案,又看不见别人的想法,根本不知道自己的想法有没有绕弯路啊
考完试不讲试卷,没有进步的啊
我直接建二维数组,然后用圆的方程画的
  1. import numpy as np

  2. def circle(d):
  3.     a = np.fromfunction(lambda x,y: np.hypot(x-d//2, y-d//2), (d,d))
  4.     [print(*i) for i in np.where(a >= d/2, " ", "*")]
复制代码

这里刚好利用了print()打印隔开字符的空格,
如果要做成楼主那种实心的,就在打印上动手脚
  1. import numpy as np

  2. def circle(d):
  3.     a = np.fromfunction(lambda x,y: np.hypot(x-d//2, y-d//2), (d+1,d+1))
  4.     for i in np.where(a > d/2, " ", "*"):
  5.         for j in i:
  6.             print(2*j, sep="", end="")
  7.         print()
复制代码
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:14 天
连续签到:1 天
发表于 2017-9-12 22:40:16 | 显示全部楼层
本帖最后由 醉挽丶南风 于 2017-9-12 22:42 编辑
  1. import math
  2. def fun(n):
  3.     content = []
  4.     n=n//2
  5.     for y in range(1,n+1):
  6.         lenght=int(math.sqrt(n**2-(n-y)**2))
  7.         subcontent = []
  8.         for a in range(2*(n-lenght)):
  9.             subcontent.append(' ')
  10.         for b in range(4*lenght):
  11.             subcontent.append('*')
  12.         for a in range(2*(n-lenght)):
  13.             subcontent.append(' ')
  14.         content.append(''.join(subcontent))
  15.         content.append('\n')

  16.     for y in range(n+1,1,-1):
  17.         lenght=int(math.sqrt(n**2-(n-y)**2))
  18.         subcontent = []
  19.         for a in range(2*(n-lenght)):
  20.             subcontent.append(' ')
  21.         for b in range(4*lenght):
  22.             subcontent.append('*')
  23.         for a in range(2*(n-lenght)):
  24.             subcontent.append(' ')
  25.         content.append(''.join(subcontent))
  26.         content.append('\n')
  27.         
  28.     print(''.join(content))

  29. fun(40)
复制代码


微信图片_20170912224207.png

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
冬雪雪冬 + 2 + 2

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
7 
累计签到:10 天
连续签到:1 天
发表于 2017-9-12 22:59:52 | 显示全部楼层
我用IDLE打印过,没问题啊。
横向的字符数可设为纵向的2倍。 我是2倍的。
我的参数d是半径。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
445 
累计签到:661 天
连续签到:36 天
 楼主| 发表于 2017-9-13 07:43:12 | 显示全部楼层
solomonxian 发表于 2017-9-12 21:14
给楼主提个建议:
要不改成多少时间后或者多少楼后公布答案,或者公开大家的回帖,不再奖励

在大家答题后一段时间会公开回帖。如果比较复杂的问题会加上讲评,谢谢你的建议。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
445 
累计签到:661 天
连续签到:36 天
 楼主| 发表于 2017-9-13 07:44:24 | 显示全部楼层
bush牛 发表于 2017-9-12 22:59
我用IDLE打印过,没问题啊。
横向的字符数可设为纵向的2倍。 我是2倍的。
我的参数d是半径。

明白了,我是按直径考虑的。
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-9-26 19:05 Powered by Discuz! X2.5 Theme by dreambred

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