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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

2246閲覧

python 文字から数値を取り出す?方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2016/11/20 16:34

編集2016/11/20 18:39

###前提・実現したいこと
タイトルではわかりにくいと思うので具体的に

例えば、スライムに対してステータスの数値を設定するとします
こうげき8 防御8 かしこさ8 といった具合に

そしてinputを用いて、スライムと入力した際に、
設定したステータスを抽出し、何かしらの計算に使いたいのです

ここでは戦闘ダメージを計算したいとします
スライムの攻撃力-勇者の防御力が計算式だったとして
スライムのこうげきは先ほどの8
勇者の防御力は5とします

そしてスライムと入力すると3という値が返ってくる

自分のイメージのコードはこんな感じです↓

###該当のソースコード
y=int(input("モンスターの図鑑ナンバーは?"))

"""
図鑑ナンバー
スライムが1
ドラゴンが2
ゴーレムが3とする
"""

Slime=8 #スライムの攻撃力
Dragon=15 #ドラゴンの攻撃力
Golem=20 #ゴーレムの攻撃力

x=5 #勇者の防御力

if y==1:
print(Slime-x)

elif y==2:
print(Dragon-x)

elif y==3:
print(Golem-x)

else:
while 3<y:
y=int(input("再度入力。モンスターの図鑑ナンバーは?"))

ここではモンスター名ではなく、図鑑ナンバーという数値を入力しているわけですが
ここでモンスター名を直接入力して数値結果を出したいわけです

###補足情報(言語/FW/ツール等のバージョンなど)
最近勉強を始めたので
自分がプログラムについてわかる範囲は広くなく
クラスのコンストラクタとかメソッドとかが何とかわかる程度です
もしその範囲で解決可能なら教えていただきたいです

ではよろしくお願いします

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

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

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

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

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

guest

回答1

0

ベストアンサー

要は、モンスターの名前から、モンスターの能力値を取得したいということでしょうか?
そうであれば、まず、モンスター名と能力値の対応表を作らなければなりません。

主人公:{ HP:10, 防御力:5, 攻撃力:5, } スライム:{ HP:8, 防御力:8, 攻撃力:8, }

のような感じですね。


イメージが出来たら、実際のプログラムに移しましょう。
今回は 辞書配列多次元配列 と言うものを組み合わせて使ってみます。

python

1# 基本ステータスの定義 2status = { "主人公": [10, 5, 5], "スライム": [8, 8, 8] } 3 4# 取り出してみる 5print "主人公のHPは" + str(status["主人公"][0]) 6print "主人公の防御力は" + str(status["主人公"][1]) 7print "主人公の攻撃力は" + str(status["主人公"][2]) 8

このような形になります。

如何でしょうか?

投稿2016/11/20 19:33

nnahito

総合スコア2004

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

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

退会済みユーザー

退会済みユーザー

2016/11/21 05:38

回答ありがとうございます 自分が求めている事と少し違いますね... わかりにくくて申し訳ないです 対応表を作るのまではいいのですが 文字列を入力することでそれに対応させた数値を出力?して、更に計算に使いたいのです... スライムの攻撃力を8と設定します そして、スライムという文字列を入力した時に、設定した8を引き出し 尚且つ、その8を計算式に加えたいのです つまり文字列と値の対応表を作る→文字列を入力し、対応させた数値を出力する→出力された値を計算式に埋め込む的な感じです 仮にですが、if文の条件式に、文字列を使う事ができると想定したコードを書いてみます y=(input("モンスターの名前は?")) Slime=8 #スライムの攻撃力 Dragon=15 #ドラゴンの攻撃力 Golem=20 #ゴーレムの攻撃力 x=5 #勇者の防御力 if y=="スライム": print(Slime-x) elif y=="ドラゴン": print(Dragon-x) elif y=="ゴーレム": print(Golem-x) 当然エラーを吐きますがしたい事が何となく伝わりますかね... 質問する時に書いたコードではモンスター名を図鑑ナンバーに見立てて書いていました しかしモンスターの数が、増えていくと、ナンバーを覚えるのが大変です そこでモンスター名を直接入力して、対応した値を返してくれる方法はないかなということです これはif文の条件式に、文字列を組み込みたいとかいう質問ではないですし あくまで自分のイメージなので、まったく違うやり方でも構いません やはりこういったことは難しいのですかね...
退会済みユーザー

退会済みユーザー

2016/11/21 05:53

本当に申し訳ありません どうやらとんでもない勘違いをしていたようです 少しだけc言語をかじっていたのと、if文の条件式に文字列を組み込んだ試みをしてみた時に 別の何かでたまたまエラーになっていたせいで、pythonも文字列を組み込むのが不可能なんだなと勝手に勘違いしてました 以下のコードで自分のしたい事が出来ました y=(input("モンスターの名前は?")) Slime=8 #スライムの攻撃力 Dragon=15 #ドラゴンの攻撃力 Golem=20 #ゴーレムの攻撃力 x=5 #勇者の防御力 if y=="スライム": print(Slime-x) elif y=="ドラゴン": print(Dragon-x) elif y=="ゴーレム": print(Golem-x) else: y=(input("モンスターの名前は?"))
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問