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

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

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

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

Q&A

解決済

3回答

1390閲覧

乱数を一つ出したのちに、出た数字を条件によって変化させる方法が分かりません。

lswmladmlkandka

総合スコア1

Python

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

0グッド

0クリップ

投稿2020/06/22 08:19

前提・実現したいこと

乱数を使うゲームを作っています。ゲームの内容は
1 から 100 までのランダムな整数 x を発生させる.
x が 80 以上なら, x を 2 倍した数を返す.
x が 50 未満なら,1/2 倍した数を返す.
それ以外の x の場合は,0 を返す.
となっています。
ランダムな整数を発生させるところまではできていると思うのですが、xを条件で分けた後に二倍をする、1/2する方法が分かりません。

発生している問題・エラーメッセージ

invalid syntax

該当のソースコード

import numpy as np x=np.random.randint(1,101,1) def one(a,b): if x>=80: return(a*b) i= one(x,2) elif x<50: return(a/b) i= one(x,2) else: i=0 print(i)

試したこと

defを使わずにfor を使ってなど見ましたが答えが出ませんでした。

補足情報(FW/ツールのバージョンなど)

pythonを始めて数か月経ちましたが理解が追いついておらず、程度の低い問題であることは承知しておりますが、教えていただけると幸いです。

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

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

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

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

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

guest

回答3

0

ベストアンサー

つっこみどころ満載なのでコードに直接書いていきますね。

Python3

1import numpy as np 2 3x=np.random.randint(1,101,1) # 質問!numpyをなぜ使うのですか?速く計算したいのですか? 4 5def one(a,b): # 単にランダムな数を取得してその数に応じた処理を行うなら引数を2つ取る関数っておかしいですよね? 6 if x>=80: 7 return(a*b) # ここでreturnするな。次の行が実行されない 8 i= one(x,2) # この行を実行するとone関数が無限に呼び出されるがよいか? 9 10 elif x<50: 11 return(a/b) # 同上 12 i= one(x,2) # 同上 13 14 else: 15 i=0 16 17print(i) # このスコープではone関数内の変数iは見えないからiが未定義でエラーになる。なぜone関数を呼び出さないのか…

え?で、どうする?私ならAOJ(Aizu Online Judge)をやることを勧めますけど。ゲームって何?標準入出力をまともに扱える?扱えるなら競プロくらいできるよね?ってことです。

[追記]

ゲームっていうのがなんなのかわからないのでとりあえず一回実行したら一つ答えを表示するプログラムです。

Python3

1import random 2 3x = random.randint(1, 100) 4 5if (x >= 80): 6 print(x * 2) 7elif (x < 50): 8 print(x // 2) # 答えを整数で出したい場合はこっち 9 #print(x / 2) # 答えを浮動小数点で出したい場合はこっち 10else: 11 print(0)

投稿2020/06/22 12:43

編集2020/06/22 13:09
anndonut

総合スコア667

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

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

lswmladmlkandka

2020/06/22 12:57

丁寧にご指摘ありがとうございます! ゲームを作っているという言葉は自分には不適切でした、すみません。上記のようなゲームを作るという問題を学校で提示されたのですが解答がなかったためこちらに質問させていただいておりました。 AOJというのがあるのですね、教えていただきありがとうございます!
anndonut

2020/06/22 13:01

わかった。学校の課題なら手伝ったるわww
lswmladmlkandka

2020/06/22 13:47

ありがとうございます!助かりました!
guest

0

import numpy as np x=np.random.randint(1,101,1) if x>=80: i= x*2 elif x<50: i= x/2 else: i=0

できるはずです

投稿2020/06/22 11:28

skysoul

総合スコア111

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

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

lswmladmlkandka

2020/06/22 12:19

こんばんは。お返事ありがとうございます。教えていただいたコードでやってみたところ、 line 9 elif x<50: ^ IndentationError: unindent does not match any outer indentation level と出てしまいました。始まりが揃っていないことが原因なのかと思い、ifとelif、elseの頭を揃えたのですが今度はline 6 if x>=80: ^ IndentationError: unexpected indent と出てしまいました。重ね重ねの質問で大変恐縮ですが、対処方法をご教授願います。 宜しくお願い致します。
guest

0

2倍する x*2
1/2する x/2

ですね

投稿2020/06/22 08:22

y_waiwai

総合スコア87749

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問