質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

647閲覧

繰り返しの多いpythonのコードを簡潔にしたい

Takananashi

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/02/13 16:19

編集2023/02/14 01:09

実現したいこと

似たようなコードが繰り返さなくて済むようなコードの書き方が知りたい。

改善後のコード丸々ではなくてもいいので、簡潔にするテクニックが知りたい。

該当のソースコード

python

1def auto(): 2 3 temp1 = datetime.now() 4 5 p = pag.locateOnScreen(p1, grayscale=True 6 , confidence=0.8, region=p1_range) 7 if p: 8 temp2 = get_time2(temp1) 9 return p, temp2 10 p = pag.locateOnScreen( 11 p6, grayscale=True, confidence=0.8) 12 if p: 13 print() 14 print("p6",end="") 15 x = p[0] + 620 16 y = p[1] + 30 17 pag.rightClick(x,y) 18 x = x + 40 19 y = y + 55 20 pag.click(x, y) 21 else: 22 print("p6 not found") 23 print('\a') 24 sys.exit() 25 26 p = pag.locateOnScreen(p1, grayscale=True 27 , confidence=0.8, region=p1_range) 28 if p: 29 p02 = pag.locateOnScreen( 30 p11, grayscale=True, confidence=0.8) 31 sc = 0 32 for i in range(100): 33 if p02: 34 x2 = p02[0] + 236 35 y2 = p02[1] - 55 36 pag.click(x2, y2) 37 pag.moveTo(10, 10) 38 print("s"+str(sc),end="") 39 break 40 else: 41 t.sleep(0.1) 42 sc += 1 43 p = pag.locateOnScreen( 44 p11, grayscale=True, confidence=0.8) 45 print("p1 found") 46 temp2 = get_time2(temp1) 47 return p, temp2 48 49 t.sleep(0.5) 50 sc = 0 51 52 p = pag.locateOnScreen( 53 p7, grayscale=True, confidence=0.8) 54 55 for i in range(100): 56 if p: 57 print("s"+str(sc),end="") 58 print("p7",end="") 59 break 60 else: 61 t.sleep(0.1) 62 sc += 1 63 p = pag.locateOnScreen( 64 p7, grayscale=True, confidence=0.8) 65 else: 66 print("p7 not found") 67 print('\a') 68 sys.exit() 69 70 p = pag.locateOnScreen( 71 p8, grayscale=True, confidence=0.8) 72 sc = 0 73 74 for i in range(100): 75 if p: 76 print("s"+str(sc),end="") 77 print("p8",end="") 78 x = p[0] + 0 79 y = p[1] - 60 80 t.sleep(0.2) 81 pag.click(x, y) 82 break 83 else: 84 pag.scroll(-200,x,y) 85 t.sleep(0.1) 86 sc += 1 87 p = pag.locateOnScreen( 88 p8, grayscale=True, confidence=0.8) 89 else: 90 print("p8 not found") 91 print('\a') 92 sys.exit() 93 94 t.sleep(0.2) 95 sc = 0 96 97 p = pag.locateOnScreen( 98 p9, grayscale=True, confidence=0.8) 99 100 for i in range(100): 101 if p: 102 x = p[0] + 180 103 y = p[1] + 660 104 pag.click(x, y) 105 print("s"+str(sc),end="") 106 print("p9",end="") 107 break 108 else: 109 t.sleep(0.1) 110 sc += 1 111 p = pag.locateOnScreen( 112 p9, grayscale=True, confidence=0.8) 113 else: 114 print("p9 not found") 115 print('\a') 116 sys.exit() 117 118 p = pag.locateOnScreen(p1, grayscale=True 119 , confidence=0.8, region=p1_range) 120 121 t.sleep(2.2) 122 sc = 0 123 124 for i in range(100): 125 if p: 126 print("s"+str(sc),end="") 127 print("p1",end="") 128 break 129 else: 130 t.sleep(0.1) 131 sc += 1 132 p = pag.locateOnScreen(p1, grayscale=True 133 , confidence=0.8, region=p1_range) 134 else: 135 print("p1 not found") 136 print('\a') 137 sys.exit() 138 139 t.sleep(0.5) 140 sc = 0 141 142 p03 = pag.locateOnScreen(p12, grayscale=True 143 , confidence=0.8, region=p1_range) 144 145 for i in range(10): 146 if p03: 147 print("s"+str(sc),end="") 148 print("p12",end="") 149 clear_news() 150 p02 = pag.locateOnScreen(p11 151 , grayscale=True, confidence=0.8) 152 if p02: 153 print("p11",end="") 154 x2 = p02[0] + 236 155 y2 = p02[1] - 55 156 pag.click(x2, y2) 157 pag.moveTo(10, 10) 158 temp2 = get_time2(temp1) 159 print() 160 print(f"{temp2:.1f}s") 161 return p, temp2 162 else: 163 t.sleep(0.1) 164 sc += 1 165 p03 = pag.locateOnScreen(p12 166 , grayscale=True 167 , confidence=0.8, region=p1_range) 168 else: 169 print("p12 not found") 170 temp2 = get_time2(temp1) 171 return p, temp2 172 #print('\a') 173 #sys.exit()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

関数に切り出せばいいんじゃないですかね

def check_screen(img, name, max_iter=100, sleep_time=0.1, scroll=False, x=None, y=None, x_scroll=0, y_scroll=0): sc = 0 p = pag.locateOnScreen(img, grayscale=True, confidence=0.8) for i in range(max_iter): if p: if scroll: pag.scroll(x_scroll, y_scroll, x, y) print("s" + str(sc), end="") print(name, end="") break else: t.sleep(sleep_time) sc += 1 p = pag.locateOnScreen(img, grayscale=True, confidence=0.8) else: print(name + " not found") print('\a') sys.exit() return p def auto(): temp1 = datetime.now() p = pag.locateOnScreen(p1, grayscale=True, confidence=0.8, region=p1_range) if p: temp2 = get_time2(temp1) return p, temp2 p = check_screen(p6, "p6") if p: print() x = p[0] + 620 y = p[1] + 30 pag.rightClick(x, y) x = x + 40 y = y + 55 pag.click(x, y) p = check_screen(p1, "p1", sleep_time=0.2) if p: p02 = pag.locateOnScreen(p11, grayscale=True, confidence=0.8) sc = 0 for i in range(100): if p02: x2 = p02[0] + 236 y2 = p02[1] - 55 pag.click(x2, y2) pag.moveTo(10, 10) print("s" + str(sc), end="") break else: t.sleep(0.1) sc += 1 p = pag.locateOnScreen(p11, grayscale=True, confidence=0.8) print("p1 found") temp2 = get_time2(temp1) return p, temp2 p = check_screen(p7, "p7") p = check_screen(p8, "p8") p = check_screen(p9, "p9", scroll=True, x=p[0], y=p[1], x_scroll=-200) p = check_screen(p1, "p1", sleep_time=2.2)

投稿2023/02/13 16:27

編集2023/02/13 16:33
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takananashi

2023/02/13 17:14

似ているけど微妙に違うコードの繰り返しを解決するための、関数の引数の部分がとても参考になりました。ありがとうございました。
guest

0

ChatGPTにコードレビューしてもらうといいですよ

投稿2023/02/13 16:24

編集2023/02/13 18:32
ituking

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takananashi

2023/02/13 17:15

ChatGPTのことを教えて下さりありがとうございました。
ituking

2023/02/13 17:20

どういたしまして
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問