Как изменить начальное условие в цикле while - PullRequest
0 голосов
/ 14 марта 2020

Я ввожу некоторое время l oop с указанным c начальным условием (m = 0). В то время как l oop у меня есть для l oop, который должен сломаться, если spe c. условие достигнуто, здесь, если моя скорость роста> 20%.

Если это условие выполнено, я хочу оставить для l oop и использовать i для установки нового m. Затем я хочу сделать новое для l oop и снова оставить l oop, если условие достигнуто, и использовать новое i для m.

Я пробовал с m+=i, но это подводит итог i, что я не хочу. Я хочу, чтобы каждый новый i использовался для m. Пожалуйста, найдите ниже код

nvdia=pd.read_csv(r"/NVDA.csv",sep=",").round(1)
nvdia["Date"]=pd.to_datetime(nvdia["Date"])
nvdia=nvdia.set_index(nvdia["Date"])

nvdia=nvdia.drop("Date",1)
nvdia=nvdia.loc["2017-07-01":"2018-07-01"]

#nvdia["Close"].plot()

m=0
i=0
while m<len(nvdia.index):
  m+=i ###This is what I use but it is wrong. If I use i=m the loop is goes infinity, which really is  strange
  for i in range(m,len(nvdia.index)):
    percentage_growth=100*(nvdia["Close"].values[i]/nvdia["Close"].values[m]-1)
    if percentage_growth>=20:
        break

1 Ответ

0 голосов
/ 16 марта 2020

@ zmf: Спасибо, это помогло. Однако мне нужно было добавить дополнительный оператор break, чтобы оставить while l oop, так как мое условие m

На случай, если у кого-то может возникнуть одна и та же / похожая проблема, вот решение

m=0
while m<=len(nvidia.index):
  for i in range(m,len(nvidia.index)):
    percentage_growth=100*(nvidia["Close"].values[i]/nvidia["Close"].values[m]-1)
    if percentage_growth>=20:
        m=i
        print(m,percentage_growth)
        break
    else:
        percentage_growth=100*(nvidia["Close"].values[i]/nvidia["Close"].values[m]-1)

  if i+1==len(nvidia.index):
      break
...