簡體   English   中英

如何在不使用列表的情況下在 python 中進行多行輸入?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM