1. ホーム
  2. python

[解決済み] "int() can't convert non-string with explicit base" しかし、それは文字列である。

2022-02-04 19:19:59

質問

16進数の入力を10進数のRGBに変換しようとしています。私はpythonの初心者ですが、入力が文字列であるにもかかわらず、私はタイトルのエラーが発生した場合、コードが悪いお詫び申し上げます?(変換する前に10進数に変換するものをすでに出力しましたが、それらはすべて文字列です)

v1 = input("Enter the first pixel value: ")
v2 = input("Enter the second pixel value: ")
#px_to_gen = input ("Enter the number of pixels to generate in between: ")

#group (r g b) values of v1 & v2 in a list
v1_ls = ["".join((v1[2],v1[3])),"".join((v1[4],v1[5])),"".join((v1[6],v1[7]))]
v2_ls = ["".join((v2[2],v2[3])),"".join((v2[4],v2[5])),"".join((v2[6],v2[7]))]

print(v1_ls)
print(v2_ls)

#convert values in v1_ls & v2_ls to decimal
i = 0
while (i <= 2):
    v1_ls[i] = int(v1_ls[i], 16)
    v2_ls[i] = int(v2_ls[i], 16)

print(v1_ls)
print(v2_ls)

解決方法は?

このようなエラーが発生しているのでしょう。 TypeError: int() can't convert non-string with explicit base

これは、リストを直接ベース変換して整数に変換しようとしているためです。

これを解決するには、以下のコードを試してみてください(最初に文字列に変換します)。

v1_ls[i] = int(str(v1_ls[i]), 16)
v2_ls[i] = int(str(v2_ls[i]), 16)

しかし、whileループの大きな問題を解決する必要があることを忘れないでください - それは無限ループに入ります。