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

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

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

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

Python

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

Q&A

解決済

1回答

425閲覧

繰り返し処理を用いた複数データのテキストファイルの出力の仕方

python_beg

総合スコア4

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2023/01/08 15:43

前提

ここに質問の内容を詳しく書いてください。
(例)
Pythonで乱数の生成と生成した乱数からテキストファイルの作成をしていますが,乱数の生成まではうまく処理できていますが,ファイル出力する際に一つのデータのみしか扱えていないので
全てのデータをファイルに出力する方法を教えていただきたいです.

実現したいこと

  • 乱数の生成と生成した乱数のデータのテキストファイルでの出力がしたいです.

実現例
---random.txt---
0.25319222831510024 -0.31450845389510806
-0.33422155360563865 -0.31727215631080796
-0.4985294792443007 0.28934224253940066
0.44035670886469047 0.2814007132914148
-0.3580614689532742 -0.17813689034294966
0.21834564574118798 0.04514700841586339
-0.4273910531248909 0.01652687191496649
-0.292318821574035 0.2059765912596505
-0.07907327401752862 -0.20963399840086872

Pythonで乱数の生成と生成した乱数からテキストファイルの作成をしています.(データの作成目的)
繰り返しで乱数の生成と出力をしています(100回)

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

生成した乱数をテキストファイルに出力する際に,生成した乱数の一番最後の出力のみテキストファイルに出力されています.
---random.txt---
-0.07907327401752862 -0.20963399840086872
-0.07907327401752862 -0.20963399840086872
-0.07907327401752862 -0.20963399840086872
-0.07907327401752862 -0.20963399840086872

該当のソースコード

#乱数の生成-0.5~0.5# import random #乱数の生成(任意の回数)# for i in range(100): x=random.random()-0.5 y=random.random()-0.5 print(f"{x} {y}") #ファイル出力# f=open('random.txt','w') for j in range(100): f.write(str(x)+' '+ str(y)+"\n") f.close()

わかっている点

ファイル出力の繰り返し処理が間違っているのでしょうが,
Python初心者で書き方がわからないので正しい書き方を教えていただきたいです

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

環境はgoogle colaboratoryです

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

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

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

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

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

guest

回答1

0

ベストアンサー

ファイル出力する際に一つのデータのみしか扱えていないので
全てのデータをファイルに出力する方法を教えていただきたいです.

i = 100のときのx, yだけが出力されています。修正するには、f.write(str(x)+' '+ str(y)+"\n")を、for iのループ内で実行します。

Python

1#乱数の生成-0.5~0.5# 2import random 3 4f=open('random.txt','w') 5 6#乱数の生成(任意の回数)# 7for i in range(100): 8 x=random.random()-0.5 9 y=random.random()-0.5 10 print(f"{x} {y}") 11 12 #ファイル出力# 13 f.write(str(x)+' '+ str(y)+"\n") 14 15f.close()

本題とは関係ありませんが、ファイルのオープンにはwith文が推奨されています。withを使用すると、ファイルのクローズに到達するまでに例外が発生しても、確実にクローズされます。

8. エラーと例外 — Python 3.11.1 ドキュメント

with 文はファイルのようなオブジェクトが常に、即座に正しくクリーンアップされることを保証します。

投稿2023/01/08 19:20

編集2023/01/08 19:24
jhashimoto

総合スコア838

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

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

python_beg

2023/01/08 19:33

ありがとうございます. 乱数の生成と書き込みのループをそれぞれ別々で行う事で間違った出力がされていたのですね. 無事に出力することができました. f=open()でのpythonのファイル操作の記事が多く参考にさせていただいておりました. with文は触れていないので,with文でも試してみようと思います。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問