为什么是sep ='。无法在此代码中工作?

时间:2019-10-06 04:31:05

标签: python

我正在尝试将用户输入的全名输入缩写,然后将缩写打印到屏幕上。我们必须使用循环和列表。

我已经在网上搜索,找不到针对我要执行的操作的答案。

fullName = input('Please enter your full name: ')

name = []

for i in fullName:
    if i.isupper():
        name.append(i)

for i in name:
    print(i, sep='.', end='')

我希望打印输出为A.B.C。我目前收到ABC

我在做什么错或看不到?

5 个答案:

答案 0 :(得分:2)

让我们将代码简化为一个最小的示例。输入和预处理步骤无关:

name = list('ABC')
for i in name:
    print(i, sep='.', end='')

这等效于呼叫

print ('A', sep='.', end='')
print ('B', sep='.', end='')
print ('C', sep='.', end='')

希望您能看到每个打印语句仅打印一件事,这意味着sep永远不会起作用。您可能希望将列表(或字符串)的元素拆分为单独的参数,以对print进行单个调用。

最简单的方法是使用星型扩展:

print(*name, sep='.')

或者,您可以自己进行格式化:

print('.'.join(name))

答案 1 :(得分:1)

在此代码中,

for i in name: 
    print(i ,sep='.',end='')

print在每次循环迭代中获取i中的每个单个元素name,因此它一次是一个对象。您需要传递对象以打印功能。您可以通过解压缩name列表并将其传递给打印来进行类似的操作

print(*name ,sep='.',end='')

答案 2 :(得分:1)

print(i, sep='.', end='')替换为print(i, sep='', end='.')

或者您可以打印格式的字符串,例如

name = '.'.join(name)
print(name)

答案 3 :(得分:0)

您需要一种不同的方法,因为人们经常不使用大写的姓名:

fullName = input('Please enter your full name: ')

# convert first characters of every word to upper case
initials = [i[0].upper() for i in fullName.split()]

# print them out, joining by a dot '.'
print( '.'.join(initials) )

答案 4 :(得分:0)

print()中,sep=指定如何分隔输入的对象以打印语句而不是字符串中的字符。

In[1]: print('A', 'B', sep='.')

打印:

A.B

但这:

In[2]: print('AB', sep='.')

打印:

AB

因为'AB'是一个字符串对象,没有任何可分开的内容,而'A','B'是两个字符串对象。 供参考:print()