Python:每日一题 102
本帖最后由 冬雪雪冬 于 2017-9-22 19:45 编辑首先我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 为了让大家独立思考,跟帖改为“回帖仅作者可见”。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。
题目:
有一组浮点数,将其每行打印一个,要求纵向小数点对齐,并小数点前位数最大的数紧贴左边界。
例如:-3.14;0.7177;1586.23;10000.0;-587643.1;12.34565
输出为:
-3.14
0.7177
1586.23
10000.0
-587643.1
12.34565
注意预先不知道最大的位数是多少。 def duiqi(a):
m=len(str(max(int(i) for i in a)))
for i in a:
g=len(str(int(i)))
print(" "*(m-g),i)
a=-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565
duiqi(a) list1=[-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565]
max1=0
n=1
p=0
list2=[]
for i in list1:
if i<0:
p=1
else:
p=0
while int(i/10)!=0:
i//=10
n+=1
list2.append(n+p)
n=1
max1=max(list2)
j1=0
for j in list2:
print((' ')*(max1-j),list1)
j1+=1
def print_float_num(ls):
str_ls = []
max_len = 0
for each in ls:
split_str = str(each).split('.')
str_ls.append(split_str)
if len(split_str) > max_len:
max_len = len(split_str)
for each in str_ls:
print(each.rjust(max_len),end = '')
print('.' + each)
ls = [-3.14, 0.7177, 1586.23, 10000.0, -587643.1, 12.34565]
print_float_num(ls) def duiqi(a):
m=len(str(max( for i in a)))
for i in a:
g=len(str(int(i)))
print(" "*(m-g),end="")
print(i)
a=-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565
duiqi(a)
前面有点小问题 num = [-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565]
for i in num:
print(' '*(max() for e in num])-len(str(i).split('.'))), str(i), sep='') num = [-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565]
for i in num:
print(' '*(max() for e in num])-len(str(i).split('.'))), str(i), sep='') 本帖最后由 流浪1123 于 2017-9-21 14:00 编辑
需要先把数存放到 lst =[] 中。
'''
题目:
有一组浮点数,将其每行打印一个,要求纵向小数点对齐,并小数点前位数最大的数紧贴左边界。
例如:-3.14;0.7177;1586.23;10000.0;-587643.1;12.34565
打印示意如下:
-3.14
0.7177
1586.23
10000.0
-587643.1
12.34565
'''
######################################################################
lst =
n = 0
m = 0
k = 0
maxindex = []
index_lst = []
position = []
#将lst中值转变为字符串输入为position
for i in range(0,len(lst)):
position.append((str(lst)))
n = n + 1
#匹配字符串,查找'.'的位置并返回索引值
if m < len(position):
for i in position:
if '.' in i:
index_lst.append(i.find('.'))
m = m + 1
#生成有每行的空白个数的list
while k < len(lst):
maxindex.append(max(index_lst)-index_lst)
print(' ' * maxindex,position)
k = k +1
取小数点前长度,根据长度差补充空格,打印
def fun(lst):
length =
print(*[" "*(max(length)-i) + str(j) for i, j in zip(length, lst)], sep='\n') x=[-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565,10]
def myprint(x):
x=
lenl=max()
for p in x:
if p.find('.')==-1:
print(' '*(lenl-len(p))+p)
continue
print(' '*(lenl-p.find('.'))+p)
myprint(x) 本帖最后由 古堡主人。 于 2017-9-21 21:28 编辑
写长点显得屌
x=[-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565,10]
def myprint(x):
x=
lenl=max()
for p in x: print(' ' * (lenl - len(p)) + p) if p.find('.') == -1 else print(' '*(lenl-p.find('.'))+p)
myprint(x) s = '-3.14;0.7177;1586.23;10000.0;-587643.1;12.34565'
raw_list = s.split(';')
max_len = max(len(i.split('.')) for i in raw_list)
for i in raw_list:
if len(i.split('.')) < max_len:
raw_list = ' ' * (max_len - len(i.split('.'))) + i
for i in raw_list:
print(i) print('输入五个数')
list1 = []
i = 1
while i < 6:
x = float(input("输入第%d个数:" % i))
list1.append(x)
i += 1
a = max(list1)
a1 = int(a)
b = min(list1)
b1 = int(b)
aw = len(str(a1))
bw = len(str(b1))
n = max(aw, bw)
for each in list1:
k = len(str(int(each)))
m = n - k
print(" " * m +str(each))
本帖最后由 白牙 于 2017-9-22 10:05 编辑
def lists(a_list):
n=0
a=len(a_list)
b=[]
#print(a)
while a>n:
c=str(int(a_list//1))
b.insert(n,len(c))
n+=1
#print(b)
c=max(b)
d=0
while a>d:
m=int(c)-int(b)
print(' '*m+str(a_list))
d+=1
lists([-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565])
{:10_242:} 写好啦
想了半天 好奇答案是什么 急死我了
digits = ["-3.14","0.7177","1586.23","10000.0","-587643.1","12.34565"]
max1 = 0
m = []
for i in digits:
temp = 0
for j in i:
ifj == '.':
break
temp += 1
iftemp > max1:
max1 = temp
m.append(temp)
for i inrange(len(digits)):
print(" "*(max1 - m ) + digits) digits = ["-3.14","0.7177","1586.23","10000.0","-587643.1","12.34565"]
max1 = 0
m = []
for i in digits:
temp = 0
for j in i:
ifj == '.':
break
temp += 1
iftemp > max1:
max1 = temp
m.append(temp)
for i inrange(len(digits)):
print(" "*(max1 - m ) + digits) list1 = [-3.14, 0.7177, 1586.23, 10000.0, -587643.1, 12.34565]
max_l = max(len(str(x).split('.')) for x in list1)
print_f = "%%%ds.%%s" % max_l
for i in list1:
l, r = str(i).split('.')
print(print_f % (l, r)) {:10_249:} def convertFit(alist):
widths =
maxw = max(widths)
for i, f in enumerate(alist):
print(' '*(maxw-widths) + str(f))
convertFit([-3.14,0.7177,1586.23,10000.0,-587643.1,12.34565])
页:
[1]
2