こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Python 構文のミスについて。

プログラミングの初心者です。
下のプログラミングですが、どこが間違えているのでしょうか?
まず数字を入力して、それがコンピュータがランダムに選んだ数字と同じ
であれば、あたりが表示され、ちがうのであればはずれと表示するのですが、
何回数字を入力しても、はずれしか表示されません、どうしてでしょうか、
ご指摘よろしくお願いします。

#coding:shift-jis

import random

try:
while True:
num_1 = range(10)
num_2 = raw_input('数字を入力してください\n')
if len(num_2) == 0:
break
if num_2 == random.randint(num_1):
print('あたりです')
else:
print('はずれです')

except:
print('error!')

print('終わり')

投稿日時 - 2011-08-15 15:40:51

QNo.6944356

すぐに回答ほしいです

質問者が選んだベストアンサー

会話モードでやってみるとわかるんですが

>>> import random
>>> num_1 = range(10)
>>> num_2 = raw_input('数字を入力してください\n')
数字を入力してください
5 # 入力行
>>> num_1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # num_1は0,1,..9のリスト
>>> num_2
'5' # num_2は文字列
>>> isinstance(num_2,int)
False # num_2は整数では無い
>>> isinstance(num_2,str)
True # num_2は文字列
>>> random.randint(num_1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: randint() takes exactly 3 arguments (2 given)
# random.randintは3つの引数が必要:うち一つはselfなので、実質2つの引数で呼び出す

ということで、おかしいところが複数あります。

表示されるのは「はずれです」ではなく、「error!」では無いですか?
random.randintで出た例外エラーをtry-exeptで処理しまっているだけのような気がします。

あと、このQ&Aでは、空白やタブはまとめられたり削られたりする、というPythonのプログラムには致命的な仕様になっています。別な文字に置き換えたりして、揃えるようにしましょう。

投稿日時 - 2011-08-15 18:10:10

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

num_2 に入っているものは本当に「数字」?
「0~9」までの「文字」じゃないの?

※「raw_input」は数字に変換してくれなかったと思ったけど…。

投稿日時 - 2011-08-15 16:23:30

あなたにオススメの質問