• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:python超初心者です(3時間目)。pythonで以下のようなランダ)

python初心者でもランダム数列を生成できる方法

kmeeの回答

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

Pythonはインデントが重要なのですが、ここでは消されてしまいます。 全角スペースとか適当な文字を使って代用するようにしてください。 さて。 数値は文字列ではありません。 joinは文字列を連結するものですが、数値を自動で文字列化するようなことはしません。 Pythonでは、型付けは結構厳しいです。 ところで、そのPerlの中で %xを使って数値を文字列に変換していますよね。 Pythonでも同じように文字列化すればよいのです。 フォーマット文字列 % 単独の値、またはシーケンス が,Perlの sprintf(フォーマット文字列, 値...) と同等ですので list.append( "%X" % random.randint(0,15)) とすれば、listのは16進の文字列で格納されるので、joinで連結できます #! /usr/bin/python import random # forの範囲などで使うなら、リストを作るrangeより、イテレータを作るxrangeの方が効率的 for i in xrange (20):  list = []  for j in xrange(8):   list.append('%x' % random.randint(0,15)) # 後に使わないのなら、直接書いてもよいでしょう。 # 文字列リテラルも「オブジェクト」なので、下のjoinのような書き方もできます。  print '%02d:%s' % (i, ''.join(list)) ちなみに、2.6以降ではprintの仕様変更がありましたので、そのPerlのスクリプトをPythonではこう書けます。 #! /usr/bin/python from __future__ import print_function #2.6で3仕様のprintを使用するのに必要。3では不要 import random for i in xrange(20): # もとは"%-02s"だけど、これは文字列と数値の違いのないPerlだからできること  print( "%02d:" % i , end='' )  for j in xrange(8):   print( "%x" % random.randint(0,15) , end='') # endの指定がなければ改行付き。表示文字列指定がなければ改行だけ  print( )

tk_1980024
質問者

お礼

お礼遅れましたが本当にどうもありがとうございます。 型定義が厳しい、ということを認識しました。  list.append('%x' % random.randint(0,15)) という使い方、今回学びました。 一冊ざっと読んでみて色々と疑問がでてきています。また宜しくお願いいたします

関連するQ&A

  • python初心者です。csvファイルを扱いたいんですが...

    すいません、python初心者ですので、気長に聞いてくださいcsvファイルの10番目のカラムの人数を合計したんです。1行目のフィールドはカラム名なので飛ばして2行目から読み込みたいんですが、結果が出てきません。一応書いたプログラムは、 #!usr/bin/env python import sys import string i = 0 for line in open('./data.csv').readlines(): item = string.split(line,',') if item[9].isdigit(): i+=int(item[9]) print i です。処理速度を早くしたいのでdictionaly化せずに行いたいんですが、誰かご教授願えませんか?

  • Pythonにおける空要素での2次元配列作成の方法

    現在、Pythonにおける空要素の2次元配列の作成(初期化)について、 初歩的な事柄でありながらも引っかかっています。 list1 = [] print(list1) #[] list2 = [[]for i in range(5)] print(list2) #[[], [], [], [], []] list3 = [[0 for i in range(5)] for j in range(3)] print(list3) #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] list4 = [["" for i in range(5)] for j in range(3)] print(list4) #[['', '', '', '', ''], ['', '', '', '', ''], ['', '', '', '', '']] 各種解説サイトを探して、list3やlist4の形での作成方法は見つけたのですが、 list1やlist2のように、完全な空要素(null?)での方法は見当たらず、 自分でも手探りで試してみたのですが、うまくいきませんでした。 今欲している、 #[[], [], [], [], []], [[], [], [], [], []], [[], [], [], [], []] という出力を得るためには、どのように作成したらよろしいでしょうか。

  • pythonでprint実行でsyntaxer..

    print "hello"と入れて実行するとsyntaxerrorになってしまいます。 上に#!/usr/bin/env pythonと付けて実行しているのでが、ここがおかしいような? アドバイスいただけないでしょうか?

  • pythonの、ソートのプログラムを教えて下さい。

    この、リストをソートするプログラムなんですが、 ソートしても結果が「None」と出てソートされません。 どこがエラーは出ず結果が表示されないので 間違いの箇所が分からず困っています。 以下、リストをソートするプログラムです def sort(ls): size = len(ls) i = 1 while i < size: tmp = ls[i] j = i - 1 while j >= 0 and tmp < ls[j]: ls[j + 1] = ls[j] j -= 1 ls[j + 1] = tmp i += 1 ls = [5,8,3,7,4] print sort(ls) どうしたらいいのでしょうか。分かる方、お願いします

  • pythonでの日本語操作

    お世話になります。 現在、pythonにてあるディレクトリの一覧を表示させるプログラムをしているのですが、対象の中に日本語を含むディレクトリ・ファイルがあると 処理が行われません。 現在書いているコードです。↓ #! /usr/bin/env python # -*- coding: utf-8 -*- # ファイルとサブディレクトリのパスを表示する import os, os.path path = "D:\Myfiles\あいうえお\ " for root, dirs, files in os.walk(path): for file in files: print os.path.join(root) 環境はwindowsXP,python2.6です。 エンコード・デコードを行ったのですがうまくいきませんでした。 ちなみに、pathに日本語が含まれない場合には、一覧が取得できます。 お手数ですが、分かる方いらっしゃいましたら教えてくださいませ。

  • pythonのプログラムを走らせるには?

    使用するソフトウェアの関係でWeb(HTMLまたはPHP)とPythonの連携が必要になりました。 しかしPythonをWebで扱ったことがなくいまいちどうしたらいいのか分りません。 <form action="/python/pythontest.py" method="GET">  <input type="submit" name="submit" value="更新"> </form> といった形で呼び出しているのですがファイルが開かれるだけでptythonのプログラムが実行されません。 pythonのプログラムは #!/usr/bin/env python # coding: utf-8 import cgi from datetime import datetime html_body = u""" <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <body> %s </body> </html>""" content='' print "Content-type: text/html;charset=utf-8\n" print (html_body % content).encode('utf-8') と書いています。 何が原因なのでしょうか? /usr/bin/env python のパスがうまく通っていないからでしょうか?

    • ベストアンサー
    • HTML
  • Python の構文について

    Pythonを学び始めたばかりのPython初心者です。 Pythonでは、 #!/usr/bin/env python principal = 1000 # Initial amount rate = 0.05 # Interest rate numyears = 5 # Number of years year = 1 while year <= numyears : principal *= 1 + rate print("%3d %0.2f" % (year, principal)); # Reminder: print(year, principal)in P3 year += 1 のような書き方をしますが、条件式をCみたいに()でくくったり、ブロック{}を使う方法は無いのでしょうか? (式の最後に;をつける事は出来るのです。) ()や{}を使った方が見やすいので、出来れば()や{}を使いたいと思っています。 よろしくお願いします。

  • MAMPでpythonを実行させたい

    OSX10.8を使っています http://www.python.jp/Zope/download/pythoncore python-2.7.3-macosx10.6.dmg(32bit/64bit両用) これをインストールしました 以下の記述を test.pyとして保存し #!/usr/bin/env python print "Content-type: text/html\n" print "<html><body>Python is awesome !</body></html>" MAMPを起動しtest.pyを表示させると #!/usr/bin/env python print "Content-type: text/html\n" print "<html><body>Python is awesome !</body></html>" がそのままブラウザに表示されます application/mamp/conf/apache/httpd.confを開いて #AddHandler cgi-script .cgiのコメントを外し AddHandler cgi-script .cgi .py としapacheを再起動させtest.pyを表示させると インターナルサーバーエラーになりました 何をやり残しているのか、解決方法、または参考になるページを教えて下さい よろしくお願いします

  • centos python

    以前WindowsでPythonのWebプログラムを書いていました。 webサーバーはapacheを利用しています。 そちらをcentOS(apache)に持って行きたいです。 ↓↓↓↓こちらがwindowsでのスクリプトです #! C:/Python27/python # coding: utf-8 temple_body= u""" <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>Pythonタイトル</title> </head> <body> <h1>Python テンプレート</h1> テンプレートです</br> </body> </html>""" try: print "Content-type: text/html;charset=utf-8\n" print ( temple_body.format() ).encode('utf-8') except Exception as e: print e ただテンプレートと表示されるだけのものです。 この1行目の #! C:/Python27/python を #! /usr/bin/python2.7 と直したところ サイトは開けず 500 Internal Server Error が、 エラーログには以下のようなものが出ていました。 End of script output before headers: index.py AH01215: (13)Permission denied: exec of '/var/www/html/index.py' failed #! /usr/bin/python2.7の部分が問題だと思うのですが どのように直せばいいのかがわかりません。 windowsの時は.exeを探し、Pathを指定しました。 しかし、centosでpython.exeに相当するものがどこにあるのか分りません。 centosの場合どのようなぱすを指定すれば良いのでしょうか?

  • pythonのCGIでページを遷移したい

    PythonのCGIserverを使っています。 /cgi-bin/hoge.py から /cgi-bin/foo.py へとページを遷移させたいのですが、うまくいきません。 どうすればいいですか? 以下、hoge.pyのソースです。 #!/usr/local/bin/python # coding: utf-8 (中略) print "Location: /cgi-bin/foo.py\n\n" 他の方法として、 import foo として、fooの関数やメソッドを呼ぶことも考えたのですが、 これもうまくいきません。。

    • 締切済み
    • CGI