簡體   English   中英

在Python 3中將字符串轉換為int或float?

[英]Convert strings to int or float in Python 3?

 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#的基礎知識到目前為止。 我想通過在Python上完成我所有的C#學校項目來學習Python。 我習慣了C#的簡單語法,它看起來像這樣:

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

要么

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

它接受用戶輸入字符串並將其轉換為我指定的字符串。

我想我讀過py2.x有一個叫做raw_input的命令,在這方面比py3.x的輸入命令好一點。

我試圖發現自己的格式與我在C#中習慣使用的格式類似,但是在找到一個方法將用戶輸入字符串轉換為整數后,所有這些谷歌搜索並嘗試一切我能想到(我在谷歌上發現)我覺得是時候問了。 你能幫我嗎?

您必須將整數轉換為字符串:

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

或者將其作為參數傳遞給print和打印將為您完成:

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

我會使用字符串格式化:

print('2 + {} = {}'.format(integer, rslt))

您的問題不是將輸入轉換為整數。 問題是當你寫' = ' + rslt你試圖在字符串中添加一個整數,而你不能這樣做。

你有幾個選擇。 您可以將integerrslt轉換回字符串,將它們添加到字符串的其余部分:

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

或者你可以打印多個東西:

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

或使用字符串格式:

print('2 + {0} = {1}'.format(integer, rslt))

在Python 3.x中 - input相當於Python 2.x的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...")

另一個選項 - 看起來有點復雜是允許解釋器對值進行最佳猜測,然后提出不是intfloat東西:

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')

如果你想要復雜的數字或列表或元組作為輸入,這允許更多的靈活性......

如果要將值轉換為整數,請使用int內置函數,並將值轉換為浮點數,請使用float built in函數。 然后,您可以使用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)
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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM