объединение пользовательского ввода с индексом входных данных

#python #python-3.x #while-loop

#python #python-3.x #цикл while

Вопрос:

Кажется, я не могу понять, почему я не могу заставить этот цикл повторяться — вместо этого он всегда прерывается. Я считаю, что если бы это был цикл, сценарий (надеюсь) работал бы в соответствии с инструкциями.

Я приложил инструкции к сценарию и встроил их, чтобы объяснить свое мышление.

Танки!

скрипт принимает вводимые пользователем данные, и каждый раз, когда скрипт получает строку, он должен добавлять эту строку к растущей строке. Вновь добавленные строки должны быть добавлены к растущей строке с индексом, равным длине вновь добавленной строки. Если длина вновь добавленной строки равна или больше растущей строки, этот скрипт должен добавить новую строку в конец растущей строки. Когда этот скрипт получает пустой ввод, это приложение должно прекратить прием ввода и вывести растущую строку на консоль.

     if __name__ == "__main__":
user_word = input()
second_word = input()
results = user_word   second_word[:]
i = results
while results == "":  # When script receives a blank input
    print(results)  # stop receiving input and print the growing string
    break

if user_word >= results:  # if newly added string length equal to or larger
    results = user_word   second_word[:]
    user_word.join(results)  # the new string added to end of the growing string.
    print(results)

if user_word < results:  # new string is shorter than the existing string THEN
    results = user_word   second_word[:]  # add the new string at the index equal to the new string length.
    user_word.join(results)  # Newly added strings should be added to the growing string
    print(results)
 

Комментарии:

1. его даже не имеет правильного отступа, как это будет работать?

2. вы понимаете мой ответ?

3. Я думаю, что по какой-то причине отступ был испорчен, когда я вставил его. на самом деле он был отформатирован прямо перед рукой.

Ответ №1:

 s = ''

while True:
  user_word = input('Enter string')
  if len(user_word) >= len(s):
    s = s   user_word
  elif user_word == '':
    print(s)
    break
  else:
    s = s[:len(user_word)]   user_word   s[len(user_word):]

 

Комментарии:

1. Пожалуйста, добавьте некоторые пояснения к вашему ответу. Объяснение базовой логики важнее, чем просто предоставление кода. Это помогает автору и другим читателям самостоятельно решить эту и подобные проблемы, предоставляя им подсказки к знаниям, необходимым для расширения их навыков программирования.

2. op четко понимает это, или сказал бы что-нибудь @Ironkey

3. это предположение вообще неверно, они могут пытаться выяснить, как это работает в этот самый момент

4. пользователь был замечен 57 минут назад, я ответил 2 часа назад. Поскольку это экспертная тема, я предположил, что оп понял. Но я спрошу оп, нужны ли им объяснения @Ironkey

5. ну вот, они согласились. но на будущее: вы отвечаете не только на ОП, но и на всех остальных, кто приходит на сайт в поисках ответа на эту проблему. Так что в любом случае лучше добавить объяснение. Поздравляю с принятым и счастливым кодированием : ^)