[英]How do I make a multi-line input in python without using a list?
我必须在不使用列表的情况下编写一个程序(因为我还没有学会它们)以将 10 个名称作为输入并将它们全部小写,然后将第一个字母大写。 我想出了两个都可以工作的程序; 但是,有一些问题:第一个程序是:
text=input()
x=text.split()
for name in x:
x=name.lower().capitalize()
print(x)
在上面的程序中,我只能在一行中输入名称,如果用户按下回车键以便在新行中输入新名称,程序会认为输入已经结束。 所以我搜索了互联网并找到了 readlines() 方法,但我不知道如何限制输入,我用“ctrl+z”手动完成,有没有办法可以限制它? 第二个程序如下:
import sys
text=sys.stdin.readlines()
for esm in text:
x=esm.lower().capitalize()
print(x)
如果要引入的行数为 10,则使用 for 循环
for _ in range(10):
name = input().title()
print(name)
循环中的 _ 意味着您不需要保留变量(您只需要迭代 10 次)
.title
使字符串变为小写,但第一个字符为大写
使用列表将是自然的方式,但由于这是一个约束,你可以这样做:
t = ''
for i in range(10):
name = input(f'Input name {i+1}: ')
t += name + '\n'
print(t, end='')
仍然不完全清楚您到底想做什么以及为什么说要“不使用列表”进行操作,但显示了您使用列表进行操作的示例。 无论如何,这里是您可能正在寻找的猜测:
def main():
string = input("Type in names (separated with spaces): ")
for name in string.split():
print(name.title())
if __name__ == '__main__':
main()
你可以这样做:
n = 3
name = ''
print(f'INPUT {n} NAMES:')
for i in range(n):
name += input(f'{i+1}: ').title() + '\n'
print(f'OUTPUT:\n{name}')
INPUT 3 NAMES:
1: zALL
2: WALL
3: FALL
OUTPUT:
Zall
Wall
Fall
所有答案都可能是可行的,但是在没有名称的情况下,您不想在文本中添加空名称,对吗? 在这种情况下,您需要这样做:
text = ""
i = 0
while i < 10:
x = input()
if x != "":
text += x + SEPARATOR # § is the separator, you can use anything
i += 1
for t in text.split(SEPARATOR):
print(t.title())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.