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

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

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

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

Q&A

解決済

3回答

8704閲覧

[Python] 自分でコードを書いてみたのですが上手く動きません。

galaxy645

総合スコア9

Python

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

1グッド

1クリップ

投稿2018/09/12 02:36

編集2019/09/27 02:40

python初心者です。3.6.6の環境はIDLE3.6 64-bitを使って自分で「グラブルのモンスターのトリガー技タイミングを見極める為に」コードを書いてみたのですが、どうやったら上手く動くのか分かりません。

実現したいこと
以下のコードでultimateが0~100をランダムに処理し、if文で規定の数字になったら、スライスで置き換えたultimateリスト内のどれかを表示するようにしたいのですが、randomの箇所で引っかかってしまいます。
おそらくrandomで定義している数字が存在しないからだと思うのですが、このrandomを使って上記の様に処理したい場合はどうすればよいのでしょうか?

エラーコード
ahamut\ultimate2.py", line 4, in <module>
ultimate = random(1,100)
NameError: name 'random' is not defined

python

1 2from numpy.random import randn 3 4 5ultimate = random(0,100) 6 7ultimate = ["ダイダロスウィング","キルフレア","バース・コントロール", 8 "神撃","シリウス無属性","行動停止","通常攻撃","天地鳴動・・・game_over","破滅の刻", 9 "CTMAX(完全なる破局)","オメガブラスト","完全なる破局","ビッグバーン","撃破"] 10 11ultimate.append("シリウス属性") 12ultimate[4:15] = ["行動停止","シリウス無属性","シリウス属性","天地鳴動・・・game_over","破滅の刻","CTMAX(完全なる破局)", "オメガブラスト","完全なる破局","ビッグバーン","撃破","通常攻撃"] 13ultimate 14 15if ultimate == 95: #95の時リスト内のダイダロスウィングを処理# 16 print(ultimate[0]) 17 18elif ultimate == 85 or 55: #85または55の時リスト内のキルフレアを処理# 19 print(ultimate[1]) 20 21elif ultimate == 75: #75の時リスト内のバース・コントロールを処理# 22 print(ultimate[2]) 23 24elif ultimate == 70: #70の時リスト内の神撃を処理# 25 print(ultimate[3]) 26 27elif ultimate <=69 56: #69以下56未満の時リスト内の行動停止を処理# 28 print(ultimate[4]) 29 30elif ultimate == 50 or 40: #50または40の時リスト内のシリウス無属性を処理# 31 print(ultimate[5]) 32 33elif ultimate == 45 or 35: #45または35の時リスト内のシリウス属性を処理# 34 print(ultimate[6]) 35 36elif ultimate == 32: #32の時リスト内の天地雷鳴・・・game_overを処理# 37 print(ultimate[7]) 38 39elif ultimate == 30: #30の時リスト内の破滅の刻を処理# 40 print(ultimate[8]) 41 42elif ultimate == 28: #28の時リスト内のCTMAX完全なる破局を処理# 43 print(ultimate[9]) 44 45elif ultimate == 22: #22の時リスト内のオメガブラストを処理# 46 print(ultimate[10]) 47 48elif ultimate == 15: #15の時リスト内の完全なる破局を処理# 49 print(ultimate[11]) 50 51elif ultimate == 10 or 5: #10または5時リスト内のビッグバーンを処理# 52 print(ultimate[12]) 53 54elif ultimate == 0: #0の時リスト内の撃破を処理# 55 print(ultimate[13]) 56 57else:         #上記以外の時リスト内の通常攻撃を処理#        58 print(ultimate[14]) 59``` 60 61 62 63解答よろしくお願いします。
tachikoma👍を押しています

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

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

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

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

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

tachikoma

2018/09/12 02:39

コードの部分を```で囲ってくださいませ、インデントが壊れてて読めないっす。
y_waiwai

2018/09/12 02:47

コードは、編集、<code>ボタン、で’’’の枠の中に貼り付けてください
galaxy645

2018/09/12 03:02

ごめんなさい、初めて質問したので書き方が分かりませんでした。直しましたが、問題ないでしょうか?
y_waiwai

2018/09/12 03:04

バッチシ!です
guest

回答3

0

ベストアンサー

おもしろかったのでデバッグしてみました!
やりたかったことは、こんな感じですかね??

コードを読んで比較してみてくださいませ。

python

1import numpy as np 2# from numpy.random import randn 3 4n = np.random.randint(0,100) 5# ultimate = randn(0,100) 6print("DEBUG:n=" + str(n)) #デバッグ用 7 8ultimate = ["ダイダロスウィング","キルフレア","バース・コントロール", 9 "神撃","シリウス無属性","行動停止","通常攻撃","天地鳴動・・・game_over","破滅の刻", 10 "CTMAX(完全なる破局)","オメガブラスト","完全なる破局","ビッグバーン","撃破"] 11 12ultimate.append("シリウス属性") 13ultimate[4:15] = ["行動停止","シリウス無属性","シリウス属性","天地鳴動・・・game_over","破滅の刻","CTMAX(完全なる破局)", "オメガブラスト","完全なる破局","ビッグバーン","撃破","通常攻撃"] 14# ultimate 15 16if n == 95: #95の時リスト内のダイダロスウィングを処理# 17 print(ultimate[0]) 18 19elif n == 85 or n == 55: #85または55の時リスト内のキルフレアを処理# 20 print(ultimate[1]) 21 22elif n == 75: #75の時リスト内のバース・コントロールを処理# 23 print(ultimate[2]) 24 25elif n == 70: #70の時リスト内の神撃を処理# 26 print(ultimate[3]) 27 28elif n <= 69 and n > 56: #69以下56未満の時リスト内の行動停止を処理# 29 print(ultimate[4]) 30 31elif n == 50 or n == 40: #50または40の時リスト内のシリウス無属性を処理# 32 print(ultimate[5]) 33 34elif n == 45 or n == 35: #45または35の時リスト内のシリウス属性を処理# 35 print(ultimate[6]) 36 37elif n == 32: #32の時リスト内の天地雷鳴・・・game_overを処理# 38 print(ultimate[7]) 39 40elif n == 30: #30の時リスト内の破滅の刻を処理# 41 print(ultimate[8]) 42 43elif n == 28: #28の時リスト内のCTMAX完全なる破局を処理# 44 print(ultimate[9]) 45 46elif n == 22: #22の時リスト内のオメガブラストを処理# 47 print(ultimate[10]) 48 49elif n == 15: #15の時リスト内の完全なる破局を処理# 50 print(ultimate[11]) 51 52elif n == 10 or n == 5: #10または5時リスト内のビッグバーンを処理# 53 print(ultimate[12]) 54 55elif n == 0: #0の時リスト内の撃破を処理# 56 print(ultimate[13]) 57 58else: #上記以外の時リスト内の通常攻撃を処理#        59 print(ultimate[14]) 60

投稿2018/09/12 03:24

kakimochi

総合スコア110

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

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

galaxy645

2018/09/12 03:45

はい!これです!ありがとうございます。助かりました。 これをベースにまた違う処理も書いて行こうと思います。
guest

0

Pythonはあまり詳しくないですが...

ultimate = random(0,100)ultimate = randn(1,100)ですかね?
random()はないので、randn()かな、と思います。
0×100の行列では、大きさが0になってしまいます。

elif ultimate <=69 56: #69以下56未満の時リスト内の行動停止を処理# print(ultimate[4])

の部分も、何かおかしいような気がします。

投稿2018/09/12 03:02

programming

総合スコア476

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

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

galaxy645

2018/09/12 04:56

解答ありがとうございます。 確かに抜けている箇所がありました。 また、randomではなくrandnにしてなかったから、nameエラーが発生していたのが理解できました。
guest

0

from numpy.random import randn

という名前でimportしているので、

ultimate = random(0,100)

は、

ultimate = randn(0,100)

で、いかがでしょうか。

投稿2018/09/12 02:51

kakimochi

総合スコア110

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問