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

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

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

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

Q&A

解決済

3回答

576閲覧

pythonについての質問

natu

総合スコア21

Python

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

0グッド

0クリップ

投稿2022/06/04 06:09

編集2022/06/04 09:52

授業の課題で以下の問題文が出されました。

■ 1以上100以下の乱数(整数)を100個生成し,
生成された数値を1度ずつ表示するプログラム
を作成してください
■ 集合を利用すること

python

1import random as ra 2s = range(1,100) 3x = set(s) 4print("生成した乱数を表示します") 5for i in range(1,100): 6 x = ra.randint(1,100) 7 8 print(x)

本来はこのように出力されなければいけません。

生成した乱数を表示します。
1
3
5
18
7
16


・ (結果は毎回変わります)

setを利用したはずなのに数値がダブってしまいます。
どこが間違えていますか。

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

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

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

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

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

guest

回答3

0

どこが間違えていますか。

間違いだけ指摘しますので、後は自分で考えましょう。

setを利用したはずなのに

利用していません。setと書いただけです。

Python

1import random as ra 2s = range(1,100) ・・・・・・・・・・・・1から99までの範囲 3x = set(s) ・・・・・・・・・・・・・・・・1から99までの整数を要素とする集合 4print("生成した乱数を表示します") 5for i in range(1,100):・・・・・・・・・・・i を 1 から 99まで変化させながら繰り返す 6 x = ra.randint(1,100)・・・・・・・・・ここで、さっきxに代入した集合を上書きで消して、 7 xに1から100までの乱数を代入 8 print(x)・・・・・・・・・・・・・・・・今作った 1から100までの乱数をそのまま表示

ということで、全然集合を使ってません。

Python

1x = 1 2x = 2

と書くと、「xに1を代入した」というのは消え去って、「xに2を代入した」という結果だけ残るのは理解できすよね?x = set(s)が消え去るのはそれと同じです。

投稿2022/06/04 14:45

otn

総合スコア86299

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

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

0

「どこが間違えていますか。」

・ダブりをチェックしていない
(「setを利用したはずなのに数値がダブってしまいます。」ダブりを排除するのにただsetを使えばいいというわけじゃない。setの使い方をわかってない、調べようともしてない)
・最初から1~100までの整数を含む集合を用意しているが、これだと何がしたいのか意味不明(多分集合を使えという出題者の意図がわかってない?)

考え方
①空のsetを用意しておく
②1以上100以下のランダムな数を作る
③setの中に②で作った数が含まれていないかチェック
→含まれていたらsetに含まれない数ができるまで別の数を作る。
⇔含まれていなければ、その数をsetに加えて表示する
④②~③を100回繰り返す

・setの中に含まれているかどうか、は「in」演算子を使う
(調べればすぐわかること)

import random as ra x = set() print("生成した乱数を表示します") y = ra.randint(1,100) for i in range(1,100): while y in x: y = ra.randint(1,100) x.add(y) print(y) ```

投稿2022/06/04 10:18

編集2022/06/04 10:27
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

以下のようにしてください。

python3

1import random as ra 2rx = set() 3print("生成した乱数を表示します") 4for i in range(100): 5 x = ra.randint(1,100) 6 rx.add(x) 7 8print(rx) 9

投稿2022/06/04 06:44

tatsu99

総合スコア5540

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

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

TakaiY

2022/06/04 07:51 編集

これでは100個生成して表示することが保証できませんし、生成された数値を1度ずつ表示する、というにも合っていないように思います。 重複をしないということでもないようなので、setを使わないとか、また、表示するだけなので、作るたびに表示でもいいような気がしますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問