Raspberry Pi3 MODELBに3.5インチLCDを取り付けたのをきっかけに、再びPython(パイソン)の勉強を始めました。
今までは、Python2を使っていたのですが、最新のRspbianを導入してみるとPython3になっていました。
この1年半のうちにラズパイもPythonも進化しているようです。Python3ライブラリも充実し、Python 3 の方が標準になってきたようです。こちらもPython3に移行することにしました。
以前に作ったPython2用のスクリプトが、Python3では、そのままでは動かなくなりました。
まず、頻繁に使用するprint文がPython3では、関数化され、いろいろなことができるようになっています。
変わらない部分も多くありますが、2から3で変わった部分もあり、勉強をしながらプログラミングの練習で
「数あてゲーム」を作ってみました。
なお、Pythonの勉強には、次のサイトが役に立ちます。サイトの解説者に感謝します。
数あてゲームのスクリプト(4桁の異なる数字の未知数をあてるゲームです)
main program中で""" """でコメントアウトしてある部分を解除すると未知数を表示させることができます。
プログラムのチェックに使えます。
-----------------------------------------------
"""
数あてゲーム
2019.3.17
JH7UBC Keiji Hata
"""
import random
数あてゲーム
2019.3.17
JH7UBC Keiji Hata
"""
import random
r=[0,0,0,0]
a=""
a=""
#乱数を発生させる
def ransu():
for i in range(4):
r[i] = random.randint(0,9)
def ransu():
for i in range(4):
r[i] = random.randint(0,9)
#全て違う数字4桁の乱数を発生させる
def michisu():
flag=1
while flag:
flag=0
ransu()
for i in range(4):
for j in range(i+1,4):
if r[i] == r[j]:
flag = 1
print('X = ????')
def michisu():
flag=1
while flag:
flag=0
ransu()
for i in range(4):
for j in range(i+1,4):
if r[i] == r[j]:
flag = 1
print('X = ????')
#4桁の数字を入力(全て違う数値)
def nyuryoku():
global a
flag = 1
global count
while flag:
flag = 0
print('{}回目' .format(count))
a=input('X = ')
for i in range(4):
for j in range(i+1,4):
if a[i] == a[j]:
flag =1
if flag == 1:
print('もう一度')
def nyuryoku():
global a
flag = 1
global count
while flag:
flag = 0
print('{}回目' .format(count))
a=input('X = ')
for i in range(4):
for j in range(i+1,4):
if a[i] == a[j]:
flag =1
if flag == 1:
print('もう一度')
#合っている数字を数える
def num_check():
#数字が合っている数
global xcount
xcount = 0
for i in range(4):
for j in range(4):
if a[i]==str(r[j]):
xcount += 1
def num_check():
#数字が合っている数
global xcount
xcount = 0
for i in range(4):
for j in range(4):
if a[i]==str(r[j]):
xcount += 1
#位置が合っている数
global ycount
ycount = 0
for i in range(4):
if a[i] == str(r[i]):
ycount += 1
#main program
try:
print('*** 数あてゲーム ***')
print(' 強制終了は ctrl+C')
print()
gflag = 1
while gflag:
sflag = 1
count = 1
michisu()
"""
for i in range(4):
print(r[i],end='')
print()
print()
"""
while sflag:
nyuryoku()
num_check()
print('('+str(xcount)+','+str(ycount)+')')
print()
if (xcount==4)and(ycount==4):
print('正解です!')
sflag = 0
replay = input('ゲームを続けますか(y/n)')
if (replay == 'y') or (replay == 'Y') :
pass
else:
gflag = 0
print('また遊んでね!')
else:
count += 1
while gflag:
sflag = 1
count = 1
michisu()
"""
for i in range(4):
print(r[i],end='')
print()
print()
"""
while sflag:
nyuryoku()
num_check()
print('('+str(xcount)+','+str(ycount)+')')
print()
if (xcount==4)and(ycount==4):
print('正解です!')
sflag = 0
replay = input('ゲームを続けますか(y/n)')
if (replay == 'y') or (replay == 'Y') :
pass
else:
gflag = 0
print('また遊んでね!')
else:
count += 1
except KeyboardInterrupt:
pass
pass