10
 integer = input("Number: ")
 rslt = int(integer)+2
 print('2 + ' + integer + ' = ' + rslt)
 double = input("Point Number: ")
 print('2.5 + ' +double+' = ' +(float(double)+2.5))

私に与えます

Traceback (most recent call last):
  File "C:\...", line 13, in <module>
    print('2 + ' + integer + ' = ' + rslt)
TypeError: Can't convert 'int' object to str implicitly

私はプログラミングにかなり慣れていないので、これまでの私のバックグラウンドはほとんど C# の基本です。私はすべての C# 学校のプロジェクトを Python で行うことで、Python を学びたいと思っていました。私は次のような C# の単純な構文に慣れています。

int integer = Convert.ToInt32(Console.ReadLine())

また

double double = Convert.ToDouble(Console.ReadLine())

これは、ユーザー入力文字列を受け取り、それを指定したものに変換します。

この点で、py2.xにはraw_inputというコマンドがあり、py3.xの入力コマンドよりも少しうまく機能すると思います。

Python で使用するために C# で慣れているものと同様の形式を見つけようとしていましたが、このすべてのグーグル検索とすべての試行の後、ユーザー入力文字列を整数に変換する方法を見つけるだけで驚くほど難しいことがわかりました。私は考えることができました(そして私はグーグルで見つけました)私は尋ねる時が来たと決めました. 手伝ってくれますか?

4

5 に答える 5

12

整数を文字列に変換する必要があります。

print('2 + ' + str(integer) + ' = ' + str(rslt))

または、引数として渡すとprint、printが自動的に実行します。

print('2 +', integer, '=', rslt)

私は文字列フォーマットを使用してそれを行います:

print('2 + {} = {}'.format(integer, rslt))
于 2013-03-16T02:38:34.553 に答える
6

問題は、入力を整数に変換することではありません。問題は、あなたが書くとき、あなた' = ' + rsltは文字列に整数を追加しようとしていて、それをすることができないということです。

いくつかのオプションがあります。文字列に変換integerしてrslt元に戻し、文字列の残りの部分に追加できます。

print('2 + ' + str(integer) + ' = ' + str(rslt))

または、複数のものを印刷することもできます。

print('2 + ', integer, ' = ', rslt)

または、文字列フォーマットを使用します。

print('2 + {0} = {1}'.format(integer, rslt))
于 2013-03-16T02:38:36.287 に答える
6

Python3.xでは-Python2.xinputと同等ですraw_input...

これには文字列フォーマットを使用する必要があります-そしていくつかのエラーチェックを実行します:

try:
    integer = int(input('something: '))
    print('2 + {} = {}'.format(integer, integer + 2))
except ValueError as e:
    print("ooops - you didn't enter something I could make an int of...")

もう1つのオプションは、少し複雑に見えますが、インタプリタが値を最もよく推測できるようにしてから、そうでないものを上げることintですfloat

from ast import literal_eval

try:
    value = literal_eval(input('test: '))
    if not isinstance(value, (int, float)):
        raise ValueError
    print value + 2
except ValueError as e:
    print('oooops - not int or float')

これにより、たとえば入力として複素数、リスト、またはタプルが必要な場合に、もう少し柔軟性が高まります...

于 2013-03-16T02:41:02.800 に答える
0

値を整数に変換する場合はint組み込み関数を使用し、値を浮動小数点数に変換するにはfloat組み込み関数を使用します。次に、str組み込み関数を使用して、これらの値を文字列に変換できます。組み込み関数inputは文字列を返すため、これらの関数を次のようなコードで使用します。

integer = input("Number: ")
rslt = int(integer)+2
print('2 + ' + integer + ' = ' + str(rslt))
double = input("Point Number: ")
print('2.5 + ' +str(double)+' = ' +str(float(double)+2.5)
于 2013-03-16T02:43:30.180 に答える
0
integer = int(input("Number: "))
print('2 + %d = %d' % (integer, integer + 2))

double = float(input("Point Number: "))
print('2.5 + %.2f = %.2f' % (double, double + 2.5))
于 2013-03-16T03:00:47.370 に答える