<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 編程學(xué)習(xí) >> Python >> 正文

      用Python實(shí)現(xiàn)一個(gè)簡單的抽獎(jiǎng)小程序

      作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2023/5/19

      寫在前面 

      因?yàn)榉劢z福利,所以想自己寫一個(gè)抽獎(jiǎng)小程序,用于實(shí)現(xiàn)粉絲抽獎(jiǎng)結(jié)果。

      原本規(guī)劃的比較理想:

      實(shí)時(shí)拉取評論用戶信息數(shù)據(jù)清洗,數(shù)據(jù)去重存儲(chǔ)評論用戶信息前端酷炫的展示效果

      實(shí)現(xiàn)結(jié)果 

      哈哈,但是理想是豐滿的,現(xiàn)實(shí)是骨感的,加上最近比較忙,就簡單寫了一下,實(shí)現(xiàn)了:

      用戶數(shù)據(jù)拉取數(shù)據(jù)清洗,數(shù)據(jù)去重中獎(jiǎng)數(shù)據(jù)抽取

      總體算后端實(shí)現(xiàn)了50%吧,前端0%  ,哈哈~~~后面有時(shí)間了再進(jìn)一步吧!😁😁😁

      1 數(shù)據(jù)拉取

      用Python 實(shí)現(xiàn)的,以下為相關(guān)代碼。使用過程中,有點(diǎn)報(bào)錯(cuò),最終使用postman,手動(dòng)獲取的,

      哈哈哈~~~后面再優(yōu)化吧

      import json
      import requests
      def request_get(url, param):
          fails = 0
          while True:
              try:
                  if fails >= 20:
                      break
                  ret = requests.get(url=url, params=param, timeout=10)
                  if ret.status_code == 200:
                      text = json.loads(ret.text)
                  else:
                      continue
              except:
                  fails += 1
                  print('網(wǎng)絡(luò)連接出現(xiàn)問題, 正在嘗試再次請求: ', fails)
              else:
                  break
          return text
      def request_post(url, param):
          fails = 0
          while True:
              try:
                  if fails >= 20:
                      break
                  # headers = {'content-type': 'application/json'}
                  ret = requests.post(url, json=param, timeout=10)
                  if ret.status_code == 200:
                      text = json.loads(ret.text)
                  else:
                      continue
              except:
                  fails += 1
                  print('網(wǎng)絡(luò)連接出現(xiàn)問題, 正在嘗試再次請求: ', fails)
              else:
                  break
          return text

      數(shù)據(jù)接口不適合放出來,就不放啦~😁

      用戶數(shù)據(jù)不知道合不合適放出來,也就不放啦~😁

      2 數(shù)據(jù)清洗、去重

      因?yàn)槲以鞠氲氖且鲆粋(gè)酷炫的前端,也有找到了一些不錯(cuò)的案例,3D抽獎(jiǎng)的效果,需要用戶頭像,就在清洗數(shù)據(jù)的同時(shí),也存儲(chǔ)了用戶頭像的鏈接,以下是完整代碼:

      import json
      def getData():
          with open("data.json", 'r') as f:
              temp = json.loads(f.read())
              templist = temp['data']['list']
              user = []
              for i in templist:
                  temp={
                      'nickName':i['info']['nickName'],
                      'avatar':i['info']['avatar']
                  }
                  user.append(temp)
              result = [dict(t) for t in set([tuple(d.items()) for d in user])]
              print(result)
              print(len(result))
              return result
      if __name__ == '__main__':
          getData()

      這一步是重復(fù)數(shù)據(jù)去重 

       result = [dict(t) for t in set([tuple(d.items()) for d in user])]

      3 中獎(jiǎng)數(shù)據(jù)抽取

      中獎(jiǎng)名單抽取---完整代碼

      import random
      from giftchoose.userData import getdata
      def getgift():
          num = getdata() # 用于存放抽獎(jiǎng)用戶信息
          print("歡迎來到抽獎(jiǎng)小程序!")
          print("參與抽獎(jiǎng)的用戶如下:")
          for i in num:
              print(i)
          usernum = len(num)
          reward = 2
          usernum = int(usernum)
          reward = int(reward)
          resultList = []                         # 用于存放隨機(jī)數(shù)結(jié)果
          def generateRand(counter):
              tempInt = random.randint(0, usernum-1)     # 生成一個(gè)范圍內(nèi)的臨時(shí)隨機(jī)數(shù)
              if(counter <= reward):                   # 先看隨機(jī)數(shù)的總個(gè)數(shù)是不是夠了,如果不夠
                  if(tempInt not in resultList):  # 再檢查當(dāng)前已經(jīng)生成的臨時(shí)隨機(jī)數(shù)是不是已經(jīng)存在
                      resultList.append(tempInt)  # 如果不存在,則將其追加到結(jié)果resultList中
                      counter += 1                # 然后將表示有效結(jié)果的個(gè)數(shù)加1
                  generateRand(counter)           # 不管上面的if是否成立,都要遞歸。
          generateRand(1)                    # 調(diào)用遞歸函數(shù),并給當(dāng)前要生成的有效隨機(jī)數(shù)的個(gè)序號置為1
          prize = []                              # 用于存放中獎(jiǎng)號碼
          # 將中獎(jiǎng)號碼添加到結(jié)果prize中
          for j in range(reward):
              prize.append(num[resultList[j]])
          print("\n中獎(jiǎng)用戶:")           # 輸出中獎(jiǎng)結(jié)果
          for k in range(reward):
              print(prize[k], end="\n")
      if __name__ == '__main__':
          getgift()

      項(xiàng)目結(jié)構(gòu),太簡單了,其實(shí)也算不上項(xiàng)目了😁😁😁😁😁😁

       

      python 相關(guān)知識點(diǎn)

      list列表去重的方案

      循環(huán)遍歷

      old_list = [10, 1, 1, 2, 3, 4, 5, 1, 2, 3, 6, 7, 8, 8, 9, 10, 10]
      def one():
          new_list = []
          for i in old_list:
              if i not in new_list:
                  new_list.append(i)
          print(new_list)

      使用dict:

      使用list項(xiàng)作為鍵創(chuàng)建dict,會(huì)自動(dòng)刪除任何重復(fù)項(xiàng),保留原順序,因?yàn)閐ict不能有重復(fù)的鍵。

      old_list = [10, 1, 1, 2, 3, 4, 5, 1, 2, 3, 6, 7, 8, 8, 9, 10, 10]
      def useDict():
          new_list = list(dict.fromkeys(old_list))
          print(new_list)

      使用set:將list轉(zhuǎn)化為set再轉(zhuǎn)化為list,set有自動(dòng)去重功能,缺點(diǎn):新的list不保證原順序。

      def useSet():
          new_list = list(set(old_list))
          print(new_list)

      使用set 并保證順序:不能保證順序,咱就給他加個(gè)原來的key,這樣不就保障了嘛~

      def keepOrder():
          new_list = list(set(old_list))
          new_list.sort(key=old_list.index)
          print(new_list)

      運(yùn)行結(jié)果

       

      總結(jié)

      到此這篇關(guān)于用Python實(shí)現(xiàn)一個(gè)簡單的抽獎(jiǎng)小程序的文章就介紹到這了

      Tags:python,編程學(xué)習(xí)  
      責(zé)任編輯:admin
    4. 上一篇文章:
    5. 下一篇文章:
    6. 請文明參與討論,禁止漫罵攻擊。 昵稱:注冊  登錄
      [ 查看全部 ] 網(wǎng)友評論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 色综合婷婷在线观看66| 狠狠色丁香婷婷综合潮喷| 亚洲国产综合精品一区在线播放 | 亚洲精品综合一二三区在线| 亚洲VA综合VA国产产VA中| 综合亚洲伊人午夜网| 色综合久久中文色婷婷| 一本久道久久综合多人| 久久综合图区亚洲综合图区| 欧美日韩综合一区二区三区 | 日韩亚洲人成在线综合日本| 国产成人综合久久精品红| 狠狠综合久久综合中文88 | 亚洲精品天天影视综合网| 国产天堂一区二区综合| 久久综合久久综合亚洲| 久热综合在线亚洲精品| 国产精品综合久成人 | 伊人久久大香线蕉综合影院首页| 亚洲综合av一区二区三区不卡 | 久久亚洲综合色一区二区三区| 色婷婷99综合久久久精品| 久久婷婷五月综合色奶水99啪| 中文自拍日本综合| 亚洲国产成人五月综合网| 综合一区自拍亚洲综合图区| 亚洲综合一区二区| 狠狠色噜狠狠狠狠色综合久| 久久一日本道色综合久久m| 一本久道久久综合狠狠爱| 久久婷婷五月综合色99啪ak| 亚洲伊人久久综合中文成人网| 开心婷婷五月激情综合社区| 国产成人亚洲综合a∨| 国产精品一区二区综合| 国产成人久久综合二区| 亚洲色婷婷综合开心网| 亚洲综合色婷婷七月丁香| 97色婷婷成人综合在线观看| 天天躁夜夜躁狂狂躁综合| 色悠久久久久久久综合网|