同僚とLoto6購入について会話していたところ、12個の数字を選んで8組購入しているという方がいたので、それをツール化しました。
pythonの勉強がてら作ってみましたので、こうした方が良いという所はおっしゃっていただけると幸いです。
こういうの作ってって言う方もおっしゃっていただくと私の勉強の励みになります。
なお、ツール使っても当たる保証はありません。
code.py
from objc_util import *
import ui
import console
from numpy import *
from operator import itemgetter #配列操作
main_view = ui.View()
label = ui.Label()
buttons12List = []
buttonsList = []
buttons12Bk = 0
buttonsBk = 0
buttons12Flg = False
buttonsBkTitle = '0'
def main():
global main_view
global label
global buttons12Bk
global buttonsBk
console.clear()
#View
main_view = ui.View(frame=(0,0,375,667))
main_view.name = 'Loto6用数列生成'
main_view.background_color = 'white'
#Buttons12
cnt = 1
width_height = int(main_view.width / 9)
width_margin = int((main_view.width - (width_height * 6)) / 7)
buttonType = 1
for y in range(2):
for x in range(6):
createButton((x * width_margin) + width_margin + (x * width_height),(y * 2) + 5 + (y * width_height)+5,width_height,width_height,cnt,buttonType)
cnt+=1
yMargin = 2 * width_height + 20
#Buttons
cnt = 1
width_height = int(main_view.width / 10)
width_margin = int((main_view.width - (width_height * 10)) / 11)
buttonType = 2
for y in range(5):
for x in range(10):
if cnt <= 43 or cnt==50:
createButton((x * width_margin) + width_margin + (x * width_height),(y * 2) + yMargin + (y * width_height)+5,width_height,width_height,cnt,buttonType)
cnt+=1
yMargin = yMargin + 5 * width_height + 20
#Label
label = ui.Label(frame=(0,yMargin,main_view.width,667-yMargin))
label.background_color = (200,255,204,1)
label.text_color = 'black'
label.alignment = ui.ALIGN_LEFT
label.number_of_lines = 0
label.text = ' 使い方\n ◼️数字12個生成\n\t・◼️数字タップ後●数字タップ\n\t・●数字タップ後◼️数字タップ\n\t・◼️数字タップ後◼️数字タップで入換\n ▼ボタン押下で購入案8組生成\n 補足\n ●数字は2回タップで色反転します\n 数字考案の参考までにお使いください\n iPhone7で開発しています\n\n\n\n\n\n\n'
main_view.add_subview(label)
#View表示
main_view.present('sheet')
main_view.wait_modal()
#initialize
buttons12Bk = 999
buttonsBk = 999
return
def createButton(x,y,width,height,cnt,buttonType):
global main_view
global buttons12List
global buttonsList
button = ui.Button()
button.frame = (x,y,width,height)
if buttonType == 1: #buttons12
button.title = str(cnt)
button.action = button12_tapped
button.corner_radius = 3
button.border_color = 'blacke'
button.border_width = 2
button.background_color = (100,100/255,120,1)
button.name = str(100 + cnt)
button.tint_color = 'black'
buttons12List.append(button)
main_view.add_subview(buttons12List[cnt - 1])
else:
if cnt == 50: #▼ボタンのとき
button.title = '▼'
button.action = create_tapped
else:
button.title = str(cnt)
button.action = button_tapped
button.corner_radius = width / 2
button.border_color = (0,122/255,1,1)
button.border_width = 2
button.background_color = 'white'
button.name = str(200 + cnt)
button.tint_color = (0,122/255,1,1)
if cnt == 50:
main_view.add_subview(button)
else:
buttonsList.append(button)
main_view.add_subview(buttonsList[cnt - 1])
return
def button12_tapped(sender):
global buttons12Bk #タップしたボタンの記憶用
global buttonsBk
global buttons12Flg
global buttons12List
#下部マル数字エリアがタップされている場合(値退避エリア<>999)
#sender.title = 値退避エリア
#値退避エリア=999
#下部マル数字エリアがタップされていない場合(値退避エリア==999)
#タップボタン記憶用 = sender.name - 100 - 1 #後で参照するために添字を退避
#print(buttonsBk , buttons12Bk)
if buttonsBk == 0 and buttons12Bk == 0:
buttonsBk = 999
buttons12Bk = 999
buttons12Flg = False
if buttons12Flg == True:
bkTitle = sender.title
sender.title = buttons12List[buttons12Bk].title
buttons12List[buttons12Bk].title = bkTitle
buttons12Flg = False
elif buttonsBk == 999:
buttons12Bk = int(sender.name) - 100 - 1
buttons12Flg = True
else:
sender.title = str(buttonsBk)
buttonsBk = 999
return
def button_tapped(sender):
global buttons12List
global buttons12Bk
global buttonsBk
global buttons12Flg
global buttonsBkTitle
#上部数字エリアがタップされている場合(タップボタン記憶用<>999)
#buttons12List[タップボタン記憶用].title = sender.title
#タップボタン記憶用 = 999
#上部数字エリアがタップされていない場合(タップボタン記憶用==999)
#値退避エリア = sender.title
if buttonsBk == 0 and buttons12Bk == 0:
buttonsBk = 999
buttons12Bk = 999
buttons12Flg = False
buttonsBkTitle = '0'
if int(buttonsBkTitle) == int(sender.title):
if int(int(sender.name)/100) == 2:
sender.background_color = (0,122/255,1,1)
sender.tint_color = 'white'
sender.name = str(int(sender.name) + 100)
else:
sender.background_color = 'white'
sender.tint_color = (0,122/255,1,1)
sender.name = str(int(sender.name) - 100)
else:
buttonsBkTitle = sender.title
if buttons12Bk == 999:
buttonsBk = int(sender.title)
buttons12Flg = False
else:
buttons12List[buttons12Bk].title = sender.title
buttons12Bk = 999
buttons12Flg = False
return
def create_tapped(sender):
global label
global buttons12List
numList = []
for i in buttons12List:
numList.append(int(i.title))
label.text = '\t数列\t\t\t\t\t 合計\t 奇数\t 偶数\n'
#以下、組1
getItem=itemgetter(0,3,5,6,8,9)(numList)
infoPrint(getItem)
#以下、組2
getItem=itemgetter(0,2,3,7,10,11)(numList)
infoPrint(getItem)
#以下、組3
getItem=itemgetter(0,2,4,5,7,9)(numList)
infoPrint(getItem)
#以下、組4
getItem=itemgetter(0,4,6,8,10,11)(numList)
infoPrint(getItem)
#以下、組5
getItem=itemgetter(1,2,4,5,9,11)(numList)
infoPrint(getItem)
#以下、組6
getItem=itemgetter(1,2,4,6,7,9)(numList)
infoPrint(getItem)
#以下、組7
getItem=itemgetter(1,3,7,8,10,11)(numList)
infoPrint(getItem)
#以下、組8
getItem=itemgetter(1,3,5,6,8,10)(numList)
infoPrint(getItem)
label.text = label.text + '\n\n\n\n\n'
return
def infoPrint(sender):
global label
zeroNineList = [0] * 10
oddEven = [0] * 2
for i in sender:
zeroNineList[i%10] += 1
if i%2 == 0:
oddEven[0] += 1
else:
oddEven[1] += 1
label.text = label.text + '\t' + ('{:02} {:02} {:02} {:02} {:02} {:02}'.format(*sender))+ '\t' + '=' + '\t' + str(sum(sender)) + '\t\t' + str(oddEven[1]) + '\t\t' + str(oddEven[0]) + '\n'
if __name__ == '__main__':
main()