我正在尝试将用户输入的全名输入缩写,然后将缩写打印到屏幕上。我们必须使用循环和列表。
我已经在网上搜索,找不到针对我要执行的操作的答案。
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
。
我在做什么错或看不到?
答案 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()