Python:每日一题 140
本帖最后由 冬雪雪冬 于 2018-2-1 21:36 编辑我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。
题目:
用字符做一个简单的直方图(柱状图)。已知每月的数据如下:
做出横坐标为月份的直方图。
| * *
| * * *
| * * * *
| * * * *
| * * * * *
| * * * * * *
| * * * * * * * *
| * * * * * * * * * *
| * * * * * * * * * * *
------------------------------------------------------------
1月2月3月4月5月6月7月8月9月10月 11月 12月 本帖最后由 久疤K 于 2018-1-13 09:42 编辑
'''
1. 找出最高数值
2. 以最高数值进行递减遍历, 打印边框, 每个月份判断是否打印 * 号
'''
import copy
def fun(mlist):
m = max(mlist)
while m > 0:
print("| ", end="")
for x in range(12):
print("*" if mlist >= m else " ", end="")
print()
m -= 1
print("-"*64)
print("", end="")
for x in range(12):
print("%2d月 " %(x+1), end="")
print()
def main():
mlist =
fun(mlist)
if __name__ == "__main__":
main()
结果:
本帖最后由 shigure_takimi 于 2018-1-13 10:15 编辑
a =
def getZ(a):
maxValue = max(a)
b = ['|'*maxValue]
for i in a:
b.append(' '*(maxValue-i)+'*'*i)
for i in range(maxValue):
for j in b:
print(j, end = '\t')
print()
print('-'*100)
for i in range(1,13):
print('\t'+str(i)+'月', end = '')
getZ(a) list1 =
list2 = list1[:]
number = []
layer = 9
while layer > 0:
print('|',end=' ')
for j in list1:
if j == layer:
number.append(list2.index(j))
list2 = '*'
lenth = len(number)
number.sort()
for i in range(0,lenth):
if i < lenth-1 :
if i == 0:
print(' '*4*(number) + '*',end='')
else:
print(' '*4*(number-number-1)+' '*3 + '*',end='')
else:
print(' '*4*(number-number-1)+ ' '*3 + '*')
layer -= 1
print('-'*12*4)
for i in range(1,13):
i = str(i)
print(' '+ i + '月',end='')
本帖最后由 nononoyes 于 2018-1-13 16:43 编辑
listArray =
max = max(listArray)
for i in range(1,max+2):
for j in range(len(listArray)):
if (max<=0):
print('\t%d月 '%(j+1),end ='')
else:
if(listArray-max>=0):
print('\t*',end ='')
else:
print('\t ',end ='')
if(j==len(listArray)-1):
print('\n')
max = max -1
从下往上添加字符串,然后再倒过来打印
不属于统计部分的内容直接从题目复制过来了{:10_333:}
def fun(lst):
result = ["1月2月3月4月5月6月7月8月9月10月 11月 12月",
"------------------------------------------------------------"]
for i in range(max(lst)):
stats = "".join((((j-i)*"*" or " ") + " ")[-5:] for j in lst)
result.append("| " + stats)
return "\n".join(result[::-1]) #每月数据
data =
#找到最大值
XMax = max(data)
for i in range(0,XMax):
print('|',end='')
for item in data:
if XMax - i - item > 0:
print(' ',end='')
else:
print('*',end='')
print('')
print('------------------------------------')
print(' 12345678910 11 12')
稍加思考就可得出规律。
时间复杂度:O(n2)
看完今天的汇编视频,路过,现在的汇编板块人好少。{:10_266:} L =
Max = 9
while Max > 0:
print('| '+' '.join(['*' if x >= Max else ' ' for x in L]))
Max -= 1
print('-' * 60)
print(''+' '.join(['%02d月'% x for x in range(1,13)]))
def show_histogram(ls):
max_len = max(ls)
histogram = [('*' * each).rjust(max_len) for each in ls]
for i in range(max_len):
print('|', end=' ')
for j in range(len(ls)):
print(histogram.center(7), end='')
print()
print('_' * (12 * 7 + 1))
print('|', end=' ')
months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
for each in months:
print(each.center(6), end='')
ls =
show_histogram(ls)
结果
| * *
| * * *
| * * * *
| * * * *
| * * * * *
| * * * * * *
| * * * * * * * *
| * * * * * * * * * *
| * * * * * * * * * * *
_____________________________________________________________________________________
| 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 datalist =
i = max(datalist)
list1 = [[],[],[],[],[],[],[],[],[],[],[],[]]
list2 = [[],[],[],[],[],[],[],[],[],[],[],[]]
for j in range(0,12):
list1 = (i-datalist)*" " + datalist * "*"
for k in range(0,12):
for each in list1:
list2.append(each)
for k in range(0,i):
print("|",end=" ")
for j in range(0,12):
print(list2,end= " ")
print("\n")
print("------------------------------------------------------------")
print(" 1月2月3月4月5月6月7月8月9月10月 11月 12月") 我是菜鸟,请多多指教~{:5_92:}
list1 =
l1 = []
l1.append(["|" for j in range(9)]) # 第一列为9个"|"
for i in list1:
l1.append([" " if (9-j) > i else "*" for j in range(9)])
for c in range(len(l1)):
tmp = []
for r in range(len(l1)):
tmp.append(l1)
print(' '.join(tmp))
print("____________________________________________________________________________")
print(" 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月")
结果:
list1=
list2=["1月","2月","3月","4月","5月","6月","7月","8月","9月",
"10月", "11月", "12月",]
m= max(list1)
for i in range (11):
if i <9:
print("|",end="")
for j in list1:
if j >= m:
print("*"+" "*2,end=" ")
else:
print(" "+" "*2,end=" ")
m=m-1
if i==9:
print("-"*48)
if i ==10:
for t in range(12):
print(" "+list2,end="")
print("\n")
怎么看答案 本帖最后由 大头目 于 2018-1-15 20:21 编辑
lista=
n = 0
while n < 9:
x = []
for i in range(0,12):
if lista != max(lista):
x.append(' ')
else:
x.append('*')
lista -=1
print('|'+' '.join(x))
n += 1
print('------------------------------------------------------------')
print(' 1月2月3月4月5月6月7月8月9月10月11月12月')
A =
B=['','','','','','','','','','','','','']
M=9
for Month in range(M):
for i in range(len(A)):
B = '|'
if A-M>=0:
B='*'
else:
B = ' '
print(B,' ', B,' ', B,' ', B,' ', B,' ', B,' ', B,' ', B,' ', B,' ', B,' ', B,' ',B,' ', B)
M-=1
print('_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _')
print(' ','1月 ','2月 ','3月 ','4月 ','5月 ','6月 ','7月 ','8月 ','9月 ','10月 ', '11月 ', '12月') https://www.jianshu.com/p/910c72caca5d
链接贴到这里来 我想知道答案
{:10_254:} date=
i=9
for n in range(9):
print('|',end="")
for x in range(12):
#print(date,end=" ")
if date>=i:
print('*',end=" ")
else:
print(' ',end=" ")
print("\n")
i-=1
for x in range(47):
print('-',end='')
print()
for x in range(12):
print(str(x+1)+"月",end=" ")
我是新手,请问如何能学习到其他人的解答方式呢,这样就可以学习更多的思路了{:10_256:} list1 =
for cow in range(1,10):
print("| ",end="")
for each in list1:
if each >= 10-cow:
print("*\t",end="")
else:
print("\t",end="")
print("\n")
print("-"*90)
for i in range(1,13):
print("%d月\t"%i, end="")
list_1=
a=max(list_1)
while a>0:
list_2=
for num in list_2:
if num==0 or num<0:
print("*",end='')
else:
print(" ",end='')
print('\n')
a=a-1
页:
[1]
2