3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

抽選ツールを改良し、最初から配列に抽選対象者とお題を定義して、配列をランダムに並び替え、抽選者のお題を発表するよう、抽選ツールを改良しました。

####################################################
###   お題抽選ツール
###
####################################################

#ランダムモジュールを呼び出す
import random
# エクセルへの書き込みモジュールを呼び出す
import openpyxl
# 関連付けられたアプリケーションでファイルを開くモジュールを呼び出す
import subprocess
# 非同期処理用モジュールを呼び出す
import asyncio
# タイムモジュールを呼び出す
import time
# システムモジュールを呼び出す
import sys

#配列を定義する
array1 = ["大園玲","小坂菜緒","正源司陽子","守屋麗奈","佐々木久美","山下瞳月","佐々木美玲","梅澤美波","筒井あやめ","遠藤さくら","中西アルノ","村井優","井上和","丹生明星","小林由依","山﨑天"]

array2 = ["好きな小説家","好きなお笑い芸人","好きなファッションブランド","好きなコスメブランド","好きな赤文字系ファッション雑誌","好きなロックバンド","住みたい街","好きなランニングシューズ","好きなおにぎりの具","納豆餅に使う納豆は小粒派、ひきわり派","PCはWindows派、mac派、Linux派?","一度は行きたい国","好きなゲーム","手軽にできる料理","初心者にお薦めのプログラミング言語","初詣でおみくじを引く?"]

#エクセルファイルのファイル名変数
out_file = "odai.xlsx"
wb = openpyxl.load_workbook(out_file)
#書き込むワークシートを定義する
ws = wb['select']
#行数の定義
start_row = 3
# 待ち時間変数
sleep_time = 10
#演出待ち時間変数
play_time = 2

# 非同期処理で1秒後に「抽選結果の発表です」を出力し、9秒待つ
async def start_msg():

  print("抽選結果の発表です")
  div1()
  await asyncio.sleep(sleep_time)

# 非同期処理で10秒間演出する
async def message_out():
    for k in range(0,5):
      await asyncio.sleep(play_time)
      print("ドラ" * 20)
      div1()


async def main():

  task1 = asyncio.create_task(
        start_msg()
  )

  task2 = asyncio.create_task(
        message_out()
  )

  print(f"started at {time.strftime('%X')}")
  await task1
  await task2
  print(f"ended at {time.strftime('%X')}")

#配列の数の比較関数
def array_count(num1,num2):
    if num1 == num2:
      return "OK"
    else:
      return "NG"

def div1():
  print("=" * 40)


ans =  array_count(len(array1),len(array2))
if ans == "NG":
  print("人数とお題のタイトル数が違うので、array1とarray2の数を合わせてください")
  sys.exit()

N = len(array1)

#配列の要素をランダムに並べる
random_array1 = random.sample(list(set(array1)),N)
random_array2 = random.sample(list(set(array2)),N)


#ランダムに並べた名前を1行ずつエクセルファイルに出力する。
for k in range(0,N,1):
  man1 = random_array1[k]
  title1 = random_array2[k]
  try:
    with open(out_file,mode='a') as f:
      #エクセルファイルに追記モードで書き込む
      ws.cell(row=start_row,column=2).value = man1
      ws.cell(row=start_row,column=3).value = title1
      start_row += 1
  except:
    print("エクセルファイルが開いたままです。閉じてください")
    exit()

#エクセルファイルを保存する
wb.save(out_file)

# 非同期処理で
asyncio.run(main())


#エクセルファイルを開く
subprocess.Popen(['start',r'odai.xlsx'],shell=True)
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?