Как добавить целые числа в строку, используя только два цикла while, при этом один вложен в другой - PullRequest
0 голосов
/ 04 ноября 2019

вот вопрос «Стандартный ввод состоит из одного сложения, включающего ровно пять целочисленных терминов». Например, 271 + 9730 + 30 + 813 + 5.

Мне нужно добавить все это, используя только maxдва цикла while один за другим.

Мне разрешено использовать только такие функции, как if / else, в то время как

не может использовать списки для этого

Я пытался сохранитьпервое число как «x», а затем второе число как «y» и добавьте его, а затем в конце перезапустите цикл с обрезанной строкой, чтобы исключить первые два числа

#!/usr/bin/env python

s = raw_input()
i = 0
y = 0
while i < len(s) and s[i] != "+":
  i = i + 1
  x = s[:i]
  if i < len(s):
    j = i + 1
    while j < len(s) and s[j] != "+":
      j += 1
      y = s[i + i:j]
      s = s[j:]
      i = 0

1 Ответ

0 голосов
/ 04 ноября 2019

Вы должны думать с точки зрения величины. Каждый раз, когда вы перемещаетесь на одно место, не нажимая «+», вы увеличиваете значение первой цифры в 10 раз.

result=0
s="271+9730+30+813+5"
spot=0
dec=0
i=0
while spot < 4 and i < len(s):
    if s[0] == '+':
      spot+=1;
      s=s[1:];
    if s[i] == '+':
        result = (result) + (int(s[0])*(10**(dec-1)));
        s=s[1:];
        i=0;
        dec=0;
        print s
        print result
    else:
        dec+=1;
        i+=1;
result = result + int(s)
print result

РЕДАКТИРОВАТЬ: С другой стороны, гораздо более вычислительно эффективное решение с использованием int () и ровно 2в то время как циклы:

result=0
s="271+9730+30+813+5"
spot=0
i=0
while spot < 4:
    while s[i] != '+':
       i+= 1;

    result += int(s[0:i]);
    s=s[i+1:];
    i=0;
    print "remaining string: " + s
    print "current result: " + str(result)
    spot+=1;
result += int(s)
print "final result: " + str(result)
...