snowJR 发表于 2020-9-29 16:58:24

print函数如何满足字符数后换行?

本帖最后由 snowJR 于 2020-9-29 16:59 编辑

比如说我要30个字符数后换行,如何编写这个代码?

昨非 发表于 2020-9-29 17:08:13

这样?
for i in range(1,50):
    print(i)
    if i==30:
      print()
   

rs75 发表于 2020-9-29 17:19:17

c=0
for i in range(1, 50):
    c += len('xxxx')
    if c >= 30:
      print('xxxx')
      c=0
    else:
      print('xxxx', end='')

snowJR 发表于 2020-9-29 18:52:19

rs75 发表于 2020-9-29 17:19


如果我已经有一个列表需要打印,并且要求每行30个字符要怎么写?

疾风怪盗 发表于 2020-9-29 19:06:28

snowJR 发表于 2020-9-29 18:52
如果我已经有一个列表需要打印,并且要求每行30个字符要怎么写?

增加个计数的变量来控制,比如下面打印10个字符换行
list1='sdkasjdkasdjadalsdjaldajsdjaskfhlhsbksnjfnakjdnfks'

count = 0
for num in range(len(list1)):
    print(list1,end='')
    count +=1
    if count%10 ==0:
      print()

bonst 发表于 2020-9-29 19:56:23

楼上正解,只需要把打印默认的换行修改为无,然后当计数为30的倍数,打印一个换行就行了

sunrise085 发表于 2020-9-29 20:01:00

疾风怪盗 发表于 2020-9-29 19:06
增加个计数的变量来控制,比如下面打印10个字符换行

为啥要增加一个count呢?直接用num不香吗?

疾风怪盗 发表于 2020-9-29 20:04:14

本帖最后由 疾风怪盗 于 2020-9-29 20:06 编辑

sunrise085 发表于 2020-9-29 20:01
为啥要增加一个count呢?直接用num不香吗?

也对,不过要稍微修改一下,要(num+1)%10来判断,然后还可以这样用三元运算符缩减代码
list1 = 'sdkasjdkasdjadalsdjaldajsdjaskfhlhsbksnjfnakjdnfks'

for num in range(len(list1)):
    print() if (num+1) % 10 == 0 else print(list1, end='')

sunrise085 发表于 2020-9-29 20:17:05

疾风怪盗 发表于 2020-9-29 20:04
也对,不过要稍微修改一下,要(num+1)%10来判断,然后还可以这样用三元运算符缩减代码

你这个不行啊,第十个没输出,直接用换行代替了
for num in range(len(list1)):
    print(list1) if (num+1) % 10 == 0 else print(list1, end='')

疾风怪盗 发表于 2020-9-29 20:28:27

sunrise085 发表于 2020-9-29 20:17
你这个不行啊,第十个没输出,直接用换行代替了

好吧,三元运算符的问题,不用这个就行了

list1 = 'sdkasjdkasdjadalsdjaldajsdjaskfhlhsbksnjfnakjdnfkssda'

for num in range(len(list1)):
    print(list1, end='')
    if (num+1) % 10 == 0:
      print()

rs75 发表于 2020-9-29 20:33:52

疾风怪盗 发表于 2020-9-29 20:28
好吧,三元运算符的问题,不用这个就行了

不能处理列表啊

疾风怪盗 发表于 2020-9-29 20:37:17

rs75 发表于 2020-9-29 20:33
不能处理列表啊

为什么不能处理列表?你的数据是怎么样的?
下面list2就是列表,一样可以打印,结尾不用空值,换成逗号,可以看的明显点
list1 = 'sdkasjdkasdjadalsdjaldajsdjaskfhlhsbksnjfnakjdnfkssda'
list2=list(list1)
print(list2)
for num in range(len(list2)):
    print(list2, end=',')
    if (num+1) % 10 == 0:
      print()

['s', 'd', 'k', 'a', 's', 'j', 'd', 'k', 'a', 's', 'd', 'j', 'a', 'd', 'a', 'l', 's', 'd', 'j', 'a', 'l', 'd', 'a', 'j', 's', 'd', 'j', 'a', 's', 'k', 'f', 'h', 'l', 'h', 's', 'b', 'k', 's', 'n', 'j', 'f', 'n', 'a', 'k', 'j', 'd', 'n', 'f', 'k', 's', 's', 'd', 'a']
s,d,k,a,s,j,d,k,a,s,
d,j,a,d,a,l,s,d,j,a,
l,d,a,j,s,d,j,a,s,k,
f,h,l,h,s,b,k,s,n,j,
f,n,a,k,j,d,n,f,k,s,
s,d,a,

rs75 发表于 2020-9-29 20:44:46

疾风怪盗 发表于 2020-9-29 20:37
为什么不能处理列表?你的数据是怎么样的?
下面list2就是列表,一样可以打印,结尾不用空值,换成逗 ...

['ss', 'ddd', 'kk']这样多个字符的
不过先压成一串也行
list1 = ''.join(str(i) for i in list1)

疾风怪盗 发表于 2020-9-29 20:48:35

rs75 发表于 2020-9-29 20:44
['ss', 'ddd', 'kk']这样多个字符的
不过先压成一串也行
list1 = ''.join(str(i) for i in list1)

元素是几个字符不影响的吧,不明白你说的不能处理是什么意思?这不是你要的效果?
还是你每个元素的每个字符都要计算?
list2=['ss', 'ddd', 'kk','ss', 'ddd', 'kk','ss', 'ddd', 'kk','ss', 'ddd', 'kk']
print(list2)
for num in range(len(list2)):
    print(list2, end=',')
    if (num+1) % 5 == 0:
      print()
['ss', 'ddd', 'kk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk']
ss,ddd,kk,ss,ddd,
kk,ss,ddd,kk,ss,
ddd,kk,

rs75 发表于 2020-9-29 20:58:39

疾风怪盗 发表于 2020-9-29 20:48
元素是几个字符不影响的吧,不明白你说的不能处理是什么意思?这不是你要的效果?
还是你每个元素的每个 ...

对呀, 每个字符都计算, 哈哈

疾风怪盗 发表于 2020-9-29 21:01:04

rs75 发表于 2020-9-29 20:58
对呀, 每个字符都计算, 哈哈

{:10_284:}所以你需求要讲清楚啊。。。。。。否则谁猜的到。。。。。。。

rs75 发表于 2020-9-29 21:02:45

疾风怪盗 发表于 2020-9-29 21:01
所以你需求要讲清楚啊。。。。。。否则谁猜的到。。。。。。。

按楼主的描述不就是这样吗{:10_257:}

疾风怪盗 发表于 2020-9-29 21:03:02

rs75 发表于 2020-9-29 20:58
对呀, 每个字符都计算, 哈哈

比如说这样?那你要累计到5的时候是输出后换行呢?还是不到5就输出换行?这也是有区别的。。。。。。。得说清楚啊

list2 = ['ss', 'ddd', 'kkkk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk']
print(list2)
count = 0
for num in range(len(list2)):
    print(list2, end=',')
    count += len(list2)
    if count // 5 >=1:
      print()
      count = count//5

['ss', 'ddd', 'kkkk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk']
ss,ddd,
kkkk,
ss,ddd,
kk,ss,
ddd,kk,
ss,ddd,
kk,

疾风怪盗 发表于 2020-9-29 21:04:32

list2 = ['ss', 'ddd', 'kkkk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk']
print(list2)
count = 0
for num in range(len(list2)):
    print(list2, end=',')
    count += len(list2)
    if count // 5 >=1:
      print()
      count =0

['ss', 'ddd', 'kkkk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk', 'ss', 'ddd', 'kk']
ss,ddd,
kkkk,ss,
ddd,kk,
ss,ddd,
kk,ss,ddd,
kk,

疾风怪盗 发表于 2020-9-29 21:05:27

本帖最后由 疾风怪盗 于 2020-9-30 00:58 编辑

rs75 发表于 2020-9-29 21:02
按楼主的描述不就是这样吗

{:10_277:}。。。。。搞了半天,你不是楼主啊。。。。。。才发现。。。。别捣乱
页: [1] 2
查看完整版本: print函数如何满足字符数后换行?