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

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

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

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

Q&A

解決済

3回答

909閲覧

randomな4ケタの整数、+1の整数を、複数セットでprintする

okahijiki

総合スコア404

Python 3.x

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

0グッド

0クリップ

投稿2022/01/10 06:25

編集2022/01/10 06:41

ランダムに選ばれた4ケタの整数、及び、それぞれに1を加えた4ケタの整数を2セットprintさせたいと思っています。

1セットづつ別々にprintさせることはできるのですが、ひとつのまとめた、よりスマートな記述がありましたらご教示くださいませ。

print

1import random 2 3#最初のセット 4 5a=[random.randint(1,10),random.randint(1,10),random.randint(1,10),random.randint(1,10)] 6b=[] 7c=[] 8for i in a: 9 b.append(i) 10 c.append(i+1) 11 12print(b) 13print(c) 14 15[9, 10, 7, 3] 16[10, 11, 8, 4] 17 18 19#次のセット 20d=[random.randint(1,10),random.randint(1,10),random.randint(1,10),random.randint(1,10)] 21e=[] 22f=[] 23for j in d: 24 e.append(j) 25 f.append(j+1) 26 27print(e) 28print(f) 29 30[3, 3, 1, 9] 31[4, 4, 2, 10]

【追記】リストでなくても構いません。

◎やったこと

python

1print(random.randrange(1000,9999)) 2print(random.randrange(1000,9999)) 3print(random.randrange(1000,9999)) 4print(random.randrange(1000,9999)) 5 61280 73229 84038 92783 10 11#それぞれの整数に1を足す方法が思いつきません。

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

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

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

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

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

guest

回答3

0

ベストアンサー

以下です。

python

1import random 2 3for i in range(2): 4 a = [random.randrange(1000,9999) for j in range(4)] 5 print(a) 6 print([k+1 for k in a])

実行結果

python

1>>> for i in range(2): 2... a = [random.randrange(1000,9999) for j in range(4)] 3... print(a) 4... print([k+1 for k in a]) 5... 6[5305, 1396, 6983, 7133] 7[5306, 1397, 6984, 7134] 8[6118, 2761, 5798, 5568] 9[6119, 2762, 5799, 5569]

投稿2022/01/10 08:12

ppaul

総合スコア24666

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

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

okahijiki

2022/01/10 08:27

できましたー! ご回答ありがとうございます。
guest

0

求めたい値がよく分かりませんが、乱数値とそれに1111を足した値を求めればよいかと思います。

Python

1import random 2 3N = 4 4plusV = int('1'*N) 5maxV = 10**N-plusV-1 6 7print(plusV, maxV) 8v = random.randint(1,maxV) 9print(v, v+plusV)

投稿2022/01/10 07:04

can110

総合スコア38262

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

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

okahijiki

2022/01/10 08:25

ご回答をヒントに、自分なりにやってみました。 お手数をおかけしております。 import random a=random.randrange(1000,9999) b=a+int('1'*4) print(a) print(b) print('-----') c=random.randrange(1000,9999) d=c+int('1'*4) print(c) print(d) 5797 6908 ----- 7354 8465
can110

2022/01/10 09:29

求めたい値がよく分かりませんので何とも返答しようがありません。
okahijiki

2022/01/10 10:56

失礼しました。それが...とくに求めたい値はないのです。 人の直感にて、ランダムの4ケタの数字それぞれに1を足していくのと、 コードにて自動で行うのと、その違いの感じをつかみたいと思い、当質問に相成りました。 ちなみに、その発端は、やや違うアプローチでして... 「ファスト&スロー」(ダニエル・カーネマン/早川書房)によります〜
guest

0

出力結果に[1,1,1,1]を足す前の値も、同時に確かめる方法

List comprehension を使うとよいかもしれません。

python

1import random 2 3nums0 = [[random.randint(1,10) for _ in range(4)] for _ in range(2)] 4print(nums0) 5nums = [[i + 1 for i in n] for n in nums0] 6print(nums) 7 8# 9[ [9, 2, 10, 5], [1, 4, 7, 8]] 10[[10, 3, 11, 6], [2, 5, 8, 9]]

投稿2022/01/10 07:01

編集2022/01/10 08:37
melian

総合スコア19714

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

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

okahijiki

2022/01/10 08:25

ご回答ありがとうございます。知識不足にてご迷惑をおかけします。 出力結果に[1,1,1,1]を足す前の値も、同時に確かめる方法をお教え頂けると助かります。 ご回答の出力例: [8,5,6,10] [9,6,7,11] [4,6,7,4] [5,7,8,5]
melian

2022/01/10 08:41 編集

書いてみましたが、この様な場合は Numpy の使うほうが簡便で良いかと思います。 import numpy from numpy.random import default_rng rg = default_rng() nums0 = rg.integers(1, 10, (2, 4)) nums = nums0 + 1
okahijiki

2022/01/10 10:47

ndarrayにて、before、afterが確認することが出来ました! ありがとうございます〜
okahijiki

2022/01/12 09:25

「リストの中のそれぞれのケタの文字に1を足す」という質問にて、melianさんの多次元配列によるご回答が質問の主旨に合っていました。失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問