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

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

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

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

Q&A

解決済

1回答

654閲覧

phton hit&blow作成

dolemadluche

総合スコア1

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

0グッド

0クリップ

投稿2020/07/31 03:05

前提・実現したいこと

pythonでhit&blowを作っています。
メインルーチンを絶対に使わないといけない課題です。

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

Traceback (most recent call last):
File "C:/Users/apple/PycharmProjects/Programming/課題/f1.3.py ver2.py", line 24, in <module>
hit, blow = check_hit_and_blow(target_num, trial_num)
File "C:/Users/apple/PycharmProjects/Programming/課題/f1.3.py ver2.py", line 13, in check_hit_and_blow
if trial_str[i] in target_str[i]:
TypeError: 'NoneType' object is not subscriptable

該当のソースコード

import random

def create_target_number():
s = list(range(10))
random.shuffle(s)
print(str(s[0]) + str(s[1]) + str(s[2]) + str(s[3]))

def check_hit_and_blow(target_str, trial_str):
hit = 0
blow = 0
for i in range(4):

if trial_str[i] in target_str[i]: hit += 1 else: if trial_str[i] in target_str: blow += 1 return hit, blow

create_target_number()
target_num = create_target_number()
while True:
trial_num = input("Please input trial number:")
hit, blow = check_hit_and_blow(target_num, trial_num)
print("Hit:",hit, "Blow:",blow)
if hit == 4:
break

試したこと

python初心者でいろいろとサイトで調べたのですが、メインルーチンを使用しているものが少なくほとんど試せていません

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

phton3.8です。

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

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

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

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

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

anozon

2020/07/31 04:42

コードブロックで修正したものがみたいのでお願いします。
dolemadluche

2020/07/31 07:14 編集

```import random def create_target_number(): s = list(range(10)) random.shuffle(s) return str(s[0]) + str(s[1]) + str(s[2]) + str(s[3]) def check_hit_and_blow(target_str, trial_str): hit = 0 blow = 0 for i in range(4): if trial_str[i] in target_str[i]: hit += 1 else: if trial_str[i] in target_str: blow += 1 return hit, blow create_target_number() target_num = create_target_number() while True: turn = 0 trial_num = input("Please input trial number:") hit, blow = check_hit_and_blow(target_num, trial_num) print("Hit:",hit, "Blow:",blow) if hit == 4: print(create_target_number(), "試行回数:" + turn + "回") break else: turn += 1     ```
anozon

2020/07/31 07:12

すみません質問本文の修正の意味で書きました。 ``` ←で前後を書くことでコードブロックになります。 追記欄ではマークダウンが使えないみたいです。
dolemadluche

2020/07/31 07:15

編集しました。 これでみれますか?
guest

回答1

0

ベストアンサー

create_target_number の返り値が無いように見えます。
(print 文になっています。)
Python は インデントが大切なので Code ブロックで囲わないと読みにくいので注意してください。

投稿2020/07/31 03:16

anozon

総合スコア662

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

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

dolemadluche

2020/07/31 04:10

回答ありがとうございます。 返り値を作るにはどうしたらいいですか?
anozon

2020/07/31 04:40

``` print(str(s[0]) + str(s[1]) + str(s[2]) + str(s[3])) ↓ return str(s[0]) + str(s[1]) + str(s[2]) + str(s[3]) ``` でいいと思います。
dolemadluche

2020/07/31 05:16

ありがとうございます。 無事作動しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問