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

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

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

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

Python

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

Q&A

解決済

1回答

1848閲覧

hit&blowゲームのblowが動かない

Soushi_Kawauso

総合スコア6

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2019/08/14 11:13

編集2019/08/14 11:27

前提・実現したいこと

Pythonで作ったhit&blowゲームのblowを正常に動かしたい

Pythonを勉強中でhit&blowゲームを作成しましたが、hitしか動かず、blowが作動していません・・・。

発生している問題・エラーメッセージ

8030 数を入力してね:0308 ヒット0 ブロー0 数を入力してね:0000 ヒット2 ブロー0 数を入力してね: 4桁の数字を入力してください 数を入力してね: 4桁の数字を入力してください 数を入力してね: 4桁の数字を入力してください 数を入力してね:8030 ヒット4 ブロー0 当たり!

該当のソースコード

#Python3

import random

ランダムで生成される4桁の数字を生成

a = [random.randint(0,9), random.randint(0,9), random.randint(0,9), random.randint(0,9)]

#テストのための答えを表示

print(str(a[0]) + str(a[1]) + str(a[2]) + str(a[3])) while True: isok = False

#isokがFalseの間ループする

while isok == False: b = input("数を入力してね:") if len(b) != 4: print("4桁の数字を入力してください")
#4桁が数字かどうかを判別する(4回繰り返し・・・b[0]~b[3]を確認)
else: kazuok = True for i in range(4): if (b[i] < "0") or (b[i] > "9"): print("数字ではありません") kazuok = False break if kazuok : isok = True
hit = 0 for i in range(4): if a[i] == int(b[i]): hit = hit + 1
blow = 0 for j in range(4): for i in range(4): if (int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[i] != int(b[j])): blow = blow + 1 break

# ヒット数とブロー数を表示

print("ヒット" + str(hit)) print("ブロー" + str(blow))

# ヒット数が4ならあたりで終了

if hit == 4: print("当たり!") break
Python

試したこと

引数を変えてみたりはしました・・・。

補足情報(FW/ツールのバージョンなど)

Atomで書いてMacのターミナルにコピペしてます。

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

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

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

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

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

mokemokechicken

2019/08/14 11:21

Pythonのコードは バッククオート3つ ``` で囲って書かないと、インデントが潰れて読みにくいです。 以下のように書いてもらえると、読む人に優しいです。 ------------ ``` コードをここに書く ```
Soushi_Kawauso

2019/08/14 11:28

編集しました! 質問の回答からアドバイスまでありがとうございます泣泣
guest

回答1

0

ベストアンサー

たぶん、

if (int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[i] != int(b[j])):

ここが

if (int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[j] != int(b[j])):

なんじゃないでしょうか。 ※ 3つめの条件式の a[i]a[j] にする。

(int(b[j]) == a[i]) and (a[i] != int(b[j])) は常にFalseになるので blow はカウントされないです。

投稿2019/08/14 11:19

mokemokechicken

総合スコア948

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

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

Soushi_Kawauso

2019/08/14 11:23 編集

正常に作動しました!泣  何度見直してもわからなくて・・・。 ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問