第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python - 如果有值,則循環(huán)遍歷布爾值

Python - 如果有值,則循環(huán)遍歷布爾值

守候你守候我 2021-10-10 14:45:14
我正在嘗試編寫一個腳本,在其中檢查特定頁面的名稱。在我繼續(xù)總結(jié)問題之前。該頁面可以輕彈 - 這意味著一旦您進入該頁面,它就會列出您的姓名。你做的下一個刷新頁面,它會返回空的名字列表,下一個它會再次列出你的名字。(這是我正在嘗試做的進一步想法)但是我創(chuàng)建了一個自己的小腳本,我們作為用戶可以更輕松地對其進行測試。我創(chuàng)建了一個 txt 文件,而不是請求,以便更輕松地運行程序我正在嘗試做的是以下內(nèi)容:我想制作腳本,以便它在每個循環(huán)中打開 txt,它檢查列表中是否有名稱,然后我們只打印一次。如果沒有名字 - 那么我想做一個計數(shù)器來檢查名字是否真的是空的,這意味著在這種情況下我想創(chuàng)建一種確認這一點的計數(shù)器,并聲明沒有名字列表。這意味著在 txt 文件打開 5 次之后,并且在行打開的 5 次之后列表中沒有任何名稱。然后我們可以將它聲明為它實際上是空的。如果計數(shù)器確認它是空的,那么我們循環(huán)直到找到名稱并再次打印它,然后我們像以前一樣重新開始。我嘗試過的是,我認為在編碼時會出現(xiàn)一些小問題,我可能會混淆自己或使自己過于復(fù)雜,而不是實際應(yīng)該這樣做。count = 0last_names = []names_checker = Falsewhile True:    with open('./test.txt') as f:        new_product_values = json.load(f)    # {'name': 'Random names', 'url': 'www.stackoverflow.com', 'names': []}    if names_checker == False:        if not new_product_values['sizes']:            count += 1            time.sleep(1)        if count == 5:            names_checker = True            count = 0            logger.success('Declare value as No names')        else:            names_checker = True    elif names_checker == True:        while True:            if new_product_values['names'] != last_names:                print("NEW NAMES!")                print(new_product_values['names'])                last_names = new_product_values['names']                logger.status(last_names)                names_checker = False                break            else:                logger.warn("Nothing found - sleep 1")                time.sleep(1)text file:{'name': 'Random names', 'url': 'www.stackoverflow.com', 'names': []}在這種情況下,我的預(yù)期結(jié)果是:如果列表中沒有名稱,我們在計數(shù)器中添加一個,如果下一個循環(huán)仍然繼續(xù)給我們空名稱,那么我們在計數(shù)器中添加另一個名稱,直到它到達計數(shù)器 5,當(dāng)它到達計數(shù)器 5 時我想要它將其聲明為列表為空。每當(dāng)它為空時,我們想循環(huán)直到找到名稱。一旦我們找到了我們想要聲明列表不為空的名稱,并打印一次名稱并重新開始計數(shù)器。
查看完整描述

1 回答

?
MMTTMM

TA貢獻1869條經(jīng)驗 獲得超4個贊

你的分析是對的:你把問題想得太多了。

首先,將你正在做的事情分成簡單的步驟


                +--------------------------+

  +-----------> |Get the data from the page| <-----------------+

  |             +-------------+------------+                   |

  |                           |                                |

  |                           v                                |

  |                                                            |

  |          +-------------------------------------------+     |

  |          |Get the data into a nice format (e.g. list)|     |

  |          +------------------+------------------------+     +------+

  |                             |                              |      |

  |                             |                     +--------+      |

  |                          +--+                     |               |

  |                          |                        |         +-------------+

  |                          v                        |         |wait for data|

  |                                                   |         +-------------+

  |         +--------------------------+              |

  |         |Do we actually have data? |              |                 ^

  |         +------+-----+-------------+              |flick            |no data

  |                |     |                            |                 |

+-+------+         |     |        +-------------------+-----------------+-----+

|do stuff|    <----+     +---->   |Is this a flick or is there really no data?|

+--------+     yes         no     +-------------------------------------------+

您會看到輕彈和沒有數(shù)據(jù)最終返回以獲取數(shù)據(jù)。


如果你把上面的步驟放到python代碼中,你會得到這樣的東西:


def get_data():  # just an example

    r = requests.get(...)

    r.raise_for_status()

    return r


def parse_data(text, _old=[]):  # list is mutable => preserved across calls

    """convert the text to a list of names. If there are no (new) names, the list is empty"""

    ...

    if new_data not in _old:

        _old.append(new_data)

        return new_data

    else:

        return []


def do_stuff(names):

    ...

像這樣拆分不僅可以讓您的代碼更好地被閱讀和理解,而且還為您提供了一種更改各個部分的方法:如果您想使用本地文件/數(shù)據(jù)進行測試,您只需重寫get_data而不更改任何其他內(nèi)容:


def get_data():

    if random.randint(0, 1):  # simulate flicks

        return empty_sample_data

    else:

        return random.choice(sample_data_with_names)

按照上面的結(jié)構(gòu)圖,您現(xiàn)在可以通過counter在一個循環(huán)中查看來首先獲取數(shù)據(jù),檢查它并在獲取新數(shù)據(jù)之前執(zhí)行正確的操作:


WAIT_TIME = 10*60

counter = 0

while True:

    data = parse_data(get_data())

    if data:

        counter = 0

        do_stuff(data)

        print("I got the data and did {stuff}. Now I'll wait and repeat with new names")

        time.sleep(WAIT_TIME)

    else:

        counter += 1

        if counter >= 5:  # cosmic rays may increase ``counter`` by 2 instead of 1

            counter = 0

            print("I think there actually isn't any data. I'll wait and then check again")

            time.sleep(WAIT_TIME)

如果新數(shù)據(jù)很快出現(xiàn)并且您決定不需要那么多日志記錄,您也可以直接counter取出。


查看完整回答
反對 回復(fù) 2021-10-10
  • 1 回答
  • 0 關(guān)注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號