1

Pythonを学び始めたばかりです。ユーザーに基数と数値を入力させ、それを10進数に変換しようとしています。

私は次のような組み込みのint関数を使おうとしています。

base = raw_input("what number base are you starting with?  \n")
num = raw_input("please enter your number:  ")
int(num,base)

私の問題は、そのint関数を使用する場合、変換する数値を次のように引用符で囲む必要があることです。int('fff',16)

変数を使用しているときにこれをどのように達成できますか?

4

4 に答える 4

5

引用符は必要ありません。引用符は文字列の一部ではありません。

>>> int('fff',16)
4095
>>> da_number = 'fff'
>>> int(da_number, 16)
4095

ただし、ベースを整数にキャストする必要があります。

>>> base = '16'
>>> int(da_number, base) # wrong! base should be an int.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required
>>> int(da_number, int(base)) # correct
4095
于 2013-02-25T19:38:04.743 に答える
3

結果はraw_input()文字列になります。あなたの問題はbase、整数である必要があるときに、実際にはまだ文字列であるということだと思います。

次のことを試してください。

base = raw_input('base? ')
num = raw_input('num? ')
print int(num, int(base))

例えば:

>>> base = raw_input('base? ')
base? 16
>>> num = raw_input('num? ')
num? fff
>>> print int(num, int(base))
4095
于 2013-02-25T19:39:20.113 に答える
2

問題は引用符ではありません。問題はデータにあります。 int基数を指定すると、整数の基数文字列番号が必要になります。したがって、あなたの場合、あなたは以下を使用するでしょう:

int(num,int(base))

これは、から返される文字列を受け取り、関数で必要とされる文字列として残しながらraw_input、文字列から適切なベースを構築します。basenumint

于 2013-02-25T19:38:37.070 に答える
1

引用符は、これらの文字が言語構文としてではなく、文字列の内容として解釈されるべきであることをPythonに伝えるためにあります。

変数がある場合、Pythonは内容が文字列であることをすでに認識しています。引用符は必要ないだけでなく、引用符を追加すると、Pythonは、変数の名前を保持する文字列が必要であると考えるのを混乱させます。

だから、これの両方:

int('fff',16)

この:

someNumber = 'fff'
int(someNumber,16)

int()関数に関する限り、同じことをしています。

とはいえint()、値には文字列または数値を使用できますが、ベースには数値を使用する必要があります。したがって、raw_input常に文字列を返すため、次のようなことを行う必要があります。

base = raw_input("what number base are you starting with?  \n")
num = raw_input("please enter your number:  ")
int(num,int(base))
于 2013-02-25T19:44:41.520 に答える