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

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

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

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

Q&A

解決済

2回答

1384閲覧

pythonで線形リストを作りたい

h_proc

総合スコア68

Python

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

0グッド

1クリップ

投稿2019/06/27 12:37

編集2019/06/27 12:55

pythonで線形リストを作りたいです。与えられたデータを一行ずつ読み取り、次の行のデータが前の行のデータの上に来るようにリストを作りたいです。つまり、データが逆順に並ぶようにしたいです。次のようなコードを書きましたが、エラーが出てしまいます。解決方法を教えていただきたいです。よろしくお願いいたします。

python

1class Player: 2 def __init__(self,number,name,profile,next): 3 self.number = number 4 self.name = name 5 self.profile = profile 6 self.next = next 7 8def print_info(p:Player): 9 while (p.next != None): 10 print("{:>2d}".format(int(p.number)),"{:str}".format(p.name),"{:str}".format(p.profile),end="") 11 p = p.next 12 print("") 13 14def insert_before(p:Player,bp:Player):#bpの人の前にpの人の名前を挿入 15 tmp = Player(p.number,p.name,p.profile,0) 16 p.number,p.name,p.profile = bp.number, bp.name, bp.profile 17 bp.number = tmp.number 18 bp.name = tmp.name 19 bp.profile = tmp.profile 20 bp.next = p 21 22data = [] 23 24f = open('zac_japan.txt','r',encoding = 'utf-8') 25data = f.readlines() 26f.close 27 28p = Player(0,0,0,0) 29d_old = p 30for n in data: 31 new = (n.split()) 32 d = Player(int(new[0]),new[1],new[2],0) 33 insert_before(d,d_old) 34 d_old = d 35print_info(d_old)

表示されているエラーコード
``ValueError: Invalid format specifier`

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

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

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

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

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

guest

回答2

0

ベストアンサー

よくわかりませんが、逆順にしたいのなら、次のように書けばよいのでは?

Python

1class Player: 2 def __init__(self, number, name, profile, next): 3 self.number = number 4 self.name = name 5 self.profile = profile 6 self.next = next 7 8def print_info(p): 9 while p != None: 10 print("{:>2d}".format(p.number), p.name, p.profile) 11 p = p.next 12 13f = open('zac_japan.txt', 'r', encoding = 'utf-8') 14data = f.readlines() 15f.close 16 17head = None 18for n in data: 19 new = n.split() 20 head = Player(int(new[0]), new[1], new[2], head) 21print_info(head)

投稿2019/06/27 18:22

編集2019/06/27 18:29
kazuma-s

総合スコア8224

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

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

h_proc

2019/06/27 21:34

ありがとうございます。
guest

0

(これだけで動くとは思えないが)ex09_1.pyの24行目の{:s}を{:d}に変える(2箇所)
表示されているエラーは出なくなると思う。エラーメッセージから判断しただけで他のエラーが出るかどうかまで検証していない。


回答中に質問内容が変わり、最初のエラーメッセージと変わってしまったので、現在のエラーメッセージには対応していない。

投稿2019/06/27 12:59

編集2019/06/27 13:03
sage

総合スコア1216

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問