-4

文字列を整数に変換してから、文字列のリスト内でバイナリに変換する小さなプログラムを作成しています。これは私が持っているものです

x=0
while x < len(list):
    list[x]=bin(eval(list[x])
    if(list[x].startswith("0b")):
        list[x]=list[x].replace("0b","")

if ステートメントのコロンで構文エラーが発生します。理由がわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

7

あなたの本当の問題は、bin()通話の最後に括弧がなかったことです。

x = 0
while x < len(list):
    list[x] = bin(eval(list[x]))
    if list[x].startswith("0b"):
        list[x] = list[x].replace("0b","")

行の括弧を削除できますif。python は、テスト スイートの場合に括弧を使用しません。

変数に組み込みの型名を使用しない方がよいlistため、変数の名前としては不適切です。また、文字列の先頭にある文字を取り除きたい場合は、インデックスを使用できます。

list[x] = list[x][2:]

おそらく、コードがまだ完成していないか、エラーのためにこれをまだ発見していない可能性がありますが、インクリメントしていないため、ループは決して終了しませんx

最後になりましたが、使用ないevalでください。それは起こるのを待っているセキュリティホールです。

于 2012-05-25T15:10:47.163 に答える