python bar大小 - 我怎樣才能讀取輸入為整數?





subplot放大 python座標軸 (13)


是的,在Python 3.x中, raw_input被替換為input 。 為了恢復input使用的舊行為:

eval(input("Enter a number: "))

這將讓python知道輸入的輸入是整數

為什麼這個代碼不輸入整數? 網上的所有內容都說使用raw_input() ,但是我在(在一個不涉及整數輸入的線程上raw_input()讀取raw_input() input()在Python 3.x中重命名為input()

play = True

while play:

    x = input("Enter a number: ")
    y = input("Enter a number: ")

    print(x + y)
    print(x - y)
    print(x * y)
    print(x / y)
    print(x % y)

    if input("Play again? ") == "no":
        play = False



在Python 3.x中。 默認情況下,輸入函數以字符串格式輸入。 要將它轉換為int整數,你需要包含int(input())

x=int(input("Enter the number"))



對於單行中的多個整數, map可能會更好。

arr = map(int, raw_input().split())

如果號碼已知(如2整數),則可以使用

num1, num2 = map(int, raw_input().split())



轉換為整數:

my_number = int(input("enter the number"))

對於浮點數也是如此:

my_decimalnumber = float(input("enter the number"))



默認情況下,輸入函數將輸入作為字符串格式

對於其他數據類型,您必須投入用戶輸入

在Python 2中,我們使用raw_input()函數。 它等待用戶鍵入一些輸入並按回車鍵,我們需要通過將其轉換為我們期望的數據類型將值存儲在變量中。 使用類型鑄造時要小心

x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input 
x = float(raw_input("Enter a float number: ")) #float input 
x = eval(raw_input("Enter a float number: ")) #eval input

在Python 3中,我們使用返回用戶輸入值的input()函數

x = input("Enter a number: ") #String input

如果你輸入一個字符串,int,float,eval,它將作為字符串輸入

x = int(input("Enter a number: ")) #integer input 

如果為int輸入一個字符串ValueError:int()的基數為10的無效字面量:

x = float(input("Enter a float number: ")) #float input

如果為float類型輸入字符串ValueError:無法將字符串轉換為float

x = eval(input("Enter a float number: ")) #eval input

如果你為eval強制輸入一個字符串

NameError:名稱''未定義

那些錯誤也適用於python 2




在解決CodeChef上的一個問題時,我遇到了一個整數輸入的問題,應該從一行讀取兩個整數(用空格分隔)。

雖然int(input())對於一個整數是足夠的,但我沒有找到直接輸入兩個整數的方法。 我試過這個:

num = input()
num1 = 0
num2 = 0

for i in range(len(num)):
    if num[i] == ' ':
        break

num1 = int(num[:i])
num2 = int(num[i+1:])

現在我使用num1和num2作為整數。 希望這可以幫助。




以int作為Python中的輸入:我們使用下面的簡單字符串輸入:

input()

現在我們需要int作為input.so我們將這個字符串轉換為int。 只需使用:

int(input())



input() (Python 3)和raw_input() (Python 2) 總是返回字符串。 用int()將結果轉換為整數。

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

專業提示:Python中不需要分號。




Python 2.x

有兩個函數可以獲得用戶輸入,稱為inputraw_input 。 它們之間的區別在於, raw_input不以字符串形式評估數據並按原樣返回。 但是, input將評估您輸入的任何內容,並將返回評估結果。 例如,

>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)

數據5 + 17被評估並且結果是22 。 當它評估表達式5 + 17 ,它檢測到你正在添加兩個數字,所以結果也是相同的int類型。 所以,類型轉換是免費完成的,並且22作為input的結果返回並存儲在data變量中。 您可以將input視為由eval調用組成的raw_input

>>> data = eval(raw_input("Enter a number: "))
Enter a number: 5 + 17
>>> data, type(data)
(22, <type 'int'>)

注意:在Python 2.x中使用input時,應該小心。 我解釋了為什麼在使用它時應該小心,在這個答案中 。

但是, raw_input不會像原來的字符串那樣對輸入和返回進行評估。

>>> import sys
>>> sys.version
'2.7.6 (default, Mar 22 2014, 22:59:56) \n[GCC 4.8.2]'
>>> data = raw_input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <type 'str'>)

Python 3.x

Python 3.x的input和Python 2.x的raw_input相似,並且raw_input在Python 3.x中不可用。

>>> import sys
>>> sys.version
'3.4.0 (default, Apr 11 2014, 13:05:11) \n[GCC 4.8.2]'
>>> data = input("Enter a number: ")
Enter a number: 5 + 17
>>> data, type(data)
('5 + 17', <class 'str'>)

要回答你的問題,由於Python 3.x不會計算和轉換數據類型,所以必須用int來顯式地轉換為int ,就像這樣

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

您可以接受任何基數的數字,並使用int函數將它們直接轉換為基數10,如下所示

>>> data = int(input("Enter a number: "), 8)
Enter a number: 777
>>> data
511
>>> data = int(input("Enter a number: "), 16)
Enter a number: FFFF
>>> data
65535
>>> data = int(input("Enter a number: "), 2)
Enter a number: 10101010101
>>> data
1365

第二個參數告訴輸入數字的基數,然後在內部理解並轉換它。 如果輸入的數據是錯誤的,它會拋出一個ValueError

>>> data = int(input("Enter a number: "), 2)
Enter a number: 1234
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 2: '1234'

除此之外,你的程序可以改變一點,就像這樣

while True:
    ...
    ...
    if input("Play again? ") == "no":
        break

你可以通過使用breakwhile True來消除play變量。

PS :Python不期望; 在行尾:)




在Python 3.x中, raw_input被重命名為input ,Python 2.x input被刪除。

這意味著,就像raw_input一樣,Python 3.x中的input總是返回一個字符串對象。

要解決這個問題,你需要通過將這些輸入置於int中來將這些輸入顯式地變為整數:

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

另外,Python不需要/使用分號來結束行。 所以,讓他們沒有做任何積極的事情。




多個問題需要在單行上輸入多個整數。 最好的方法是將整行數字一行輸入,然後將它們分成整數。

 p=raw_input()
    p=p.split()      
    for i in p:
        a.append(int(i))



Python 3.x有input()函數,它總是返回字符串。所以你必須轉換為int

python 3.x

x = int(input("Enter a number: "))
y = int(input("Enter a number: "))

python 2.x

在python 2.x中, raw_input()input()函數總是返回字符串,所以你必須將它們轉換為int。

x = int(raw_input("Enter a number: "))
y = int(input("Enter a number: "))



如果你認為lambdas是邪惡的,那就不要再讀了。 根據要求,您可以使用一個表達式編寫快速且內存有效的解決方案:

In [1]: from collections import ChainMap
In [2]: from string import ascii_uppercase as up, ascii_lowercase as lo; x = dict(zip(lo, up)); y = dict(zip(up, lo))
In [3]: chainmap_dict = ChainMap(y, x)
In [4]: union_dict = dict(x.items() | y.items())
In [5]: timeit for k in union_dict: union_dict[k]
100000 loops, best of 3: 2.15 µs per loop
In [6]: timeit for k in chainmap_dict: chainmap_dict[k]
10000 loops, best of 3: 27.1 µs per loop

如上所述,使用兩行或編寫函數可能是更好的方法。





python python-2.7 python-3.x int