見出し画像

#34 数当て

● 問題

コンピュータが選んだ1~300までの数(question_number)を,ヒントをたよりに,なるべく少ない回数で当てましょう。正しいヒントが表示されません。

  1. 数(question_number)と入力した数(answer_number)の差が100より大きいとき,「すごく大きい」あるいは「すごく小さい」という。

  2. 数(question_number)と入力した数(answer_number)の差が10よりs小さいとき,「ちょっと大きい」あるいは「ちょっと小さい」という。

  3. 1と2でないときは,「大きい」あるいは「小さい」という。

import random
question_number = random.randint(1,300)
answer = input('いくつ?')
answer_number = int(answer)
count = 1
while question_number != answer_number:
    if question_number-answer_number > 0#小さい場合 
        if question_number-answer_number > 100:
            print('すごく小さい')
        elif question_number-answer_number < 10:
            print('ちょっと小さい')
        else:
            print('小さい')
    if question_number-answer_number > 0#大きい場合
        if answer_number-question_number > 100:
            print('すごく大きい')
        elif answer_number-question_number < 10:
            print('ちょっと大きい')
        else:
            print('大きい')
    answer = input('いくつ?')
    answer_number = int(answer)
    count += 1
print(str(count)+'回で正解')

● 解答

if文が大きく2つのブロック(#小さい場合・#大きい場合)に分かれていることを確認しましょう。 
数(question_number)が数(answer_number)より小さいのか大きいのかによって,question_number-answer_number なのか,answer_number-question_number なのか迷うところです。
正解のコードでは,question_number-answer_number と answer_number-question_number が統一されて美しいですね。

import random
question_number = random.randint(1,300)
answer = input('いくつ?')
answer_number = int(answer)
count = 1
while question_number != answer_number:
    if question_number-answer_number > 0#小さい場合 
        if question_number-answer_number > 100:
            print('すごく小さい')
        elif question_number-answer_number < 10:
            print('ちょっと小さい')
        else:
            print('小さい')
    if answer_number-question_number > 0#大きい場合
        if answer_number-question_number > 100:
            print('すごく大きい')
        elif answer_number-question_number < 10:
            print('ちょっと大きい')
        else:
            print('大きい')
    answer = input('いくつ?')
    answer_number = int(answer)
    count += 1
print(str(count)+'回で正解')

#Python  #プログラミング

この記事が気に入ったらサポートをしてみませんか?