![見出し画像](https://assets.st-note.com/production/uploads/images/91229965/rectangle_large_type_2_68ec75f10a945f28f341c299950aef4f.png?width=800)
#34 数当て
● 問題
コンピュータが選んだ1~300までの数(question_number)を,ヒントをたよりに,なるべく少ない回数で当てましょう。正しいヒントが表示されません。
数(question_number)と入力した数(answer_number)の差が100より大きいとき,「すごく大きい」あるいは「すごく小さい」という。
数(question_number)と入力した数(answer_number)の差が10よりs小さいとき,「ちょっと大きい」あるいは「ちょっと小さい」という。
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 #プログラミング
この記事が気に入ったらサポートをしてみませんか?