Python - 使用者輸入



在 Python 中提供使用者輸入

在本章中,我們將學習 Python 如何從控制檯接收使用者輸入,並在同一控制檯上顯示輸出。

每個計算機應用程式都應該具備在執行時接受使用者輸入的功能。這使得應用程式具有互動性。根據應用程式的開發方式,它可以以控制檯(sys.stdin)中輸入的文字、圖形佈局或基於 Web 的介面等形式接受使用者輸入。

Python 使用者輸入函式

Python 提供了兩個內建函式來從鍵盤讀取輸入。

  • input() 函式
  • raw_input() 函式

Python 直譯器以互動模式和指令碼模式工作。雖然互動模式非常適合快速評估,但效率較低。對於重複執行同一組指令,應使用指令碼模式。

讓我們編寫一個簡單的 Python 指令碼開始。

#! /usr/bin/python3.11

name = "Kiran"
city = "Hyderabad"

print ("Hello My name is", name)
print ("I am from", city)

將上述程式碼儲存為 hello.py,然後從命令列執行它。以下是輸出

C:\python311> python hello.py
Hello My name is Kiran
I am from Hyderabad

該程式只是列印其中兩個變數的值。如果重複執行該程式,則每次都會顯示相同的輸出。要將該程式用於其他姓名和城市,您可以編輯程式碼,將 name 更改為“Ravi”,將 city 更改為“Chennai”。每次需要分配不同的值時,您都必須編輯程式、儲存並執行,這不是理想的方式。

input() 函式

顯然,您需要某種機制來在執行時(程式執行時)為變數分配不同的值。Python 的input()函式可以完成此任務。

以下是 Python 標準庫 input() 函式的語法。

>>> var = input()

當直譯器遇到 input() 函式時,它會等待使用者從標準輸入流(鍵盤)輸入資料,直到按下 Enter 鍵。字元序列可以儲存在字串變數中以供進一步使用。

讀取 Enter 鍵後,程式將繼續執行下一條語句。讓我們更改程式以將使用者輸入儲存在 name 和 city 變數中。

#! /usr/bin/python3.11

name = input()
city = input()

print ("Hello My name is", name)
print ("I am from ", city)

執行時,您會發現游標正在等待使用者的輸入。輸入 name 和 city 的值。使用輸入的資料,將顯示輸出。

Ravi
Chennai
Hello My name is Ravi
I am from Chennai

現在,變數在程式中未分配任何特定值。每次執行時,都可以輸入不同的值。因此,您的程式已變得真正具有互動性。

在 input() 函式內部,您可以提供一個提示文字,當您執行程式碼時,該文字將出現在游標之前。

#! /usr/bin/python3.11

name = input("Enter your name : ")
city = input("Enter your city : ")

print ("Hello My name is", name)
print ("I am from ", city)

當您執行程式時,它會顯示提示訊息,基本上幫助使用者瞭解要輸入的內容。

Enter your name: Praveen Rao
Enter your city: Bengaluru
Hello My name is Praveen Rao
I am from Bengaluru

raw_input() 函式

raw_input()函式的工作方式類似於input()函式。這裡唯一需要注意的是,此函式在 Python 2.7 中可用,並且在 Python 3.6 中已重新命名為input()

以下是raw_input()函式的語法

>>> var = raw_input ([prompt text])

讓我們使用 raw_input() 函式重寫上述程式

#! /usr/bin/python3.11

name = raw_input("Eneter your name - ")
city = raw_input("Enter city name - ")

print ("Hello My name is", name)
print ("I am from ", city)

執行時,您會發現游標正在等待使用者的輸入。輸入 name 和 city 的值。使用輸入的資料,將顯示輸出。

Eneter your name - Ravi
Enter city name - Chennai
Hello My name is Ravi
I am from Chennai

在 Python 中獲取數值輸入

讓我們編寫一個 Python 程式碼,從使用者那裡獲取矩形的寬度和高度,並計算面積。

#! /usr/bin/python3.11

width = input("Enter width : ")
height = input("Enter height : ")

area = width*height
print ("Area of rectangle = ", area)

執行程式,並輸入寬度和高度。

Enter width: 20
Enter height: 30
Traceback (most recent call last):
  File "C:\Python311\var1.py", line 5, in <module>
   area = width*height
TypeError: can't multiply sequence by non-int of type 'str'

為什麼這裡會出現TypeError?原因是,Python 始終將使用者輸入讀取為字串。因此,width="20" 和 height="30" 是字串,顯然您無法對兩個字串進行乘法運算。

為了克服這個問題,我們將使用int(),這是 Python 標準庫中的另一個內建函式。它將字串物件轉換為整數。

要從使用者那裡接受整數輸入,請以字串形式讀取輸入,並使用 int() 函式將其型別轉換為整數 -

w = input("Enter width : ")
width = int(w)

h = input("Enter height : ")
height = int(h)

您可以將輸入和型別轉換語句組合在一個語句中 -

#! /usr/bin/python3.11

width = int(input("Enter width : "))
height = int(input("Enter height : "))

area = width*height
print ("Area of rectangle = ", area)

現在,您可以向程式中的兩個變數輸入任何整數值 -

Enter width: 20
Enter height: 30
Area of rectangle = 600

Python 的float() 函式將字串轉換為浮點數物件。以下程式接受使用者輸入並將其解析為浮點型變數 rate,並計算使用者輸入金額的利息。

#! /usr/bin/python3.11

amount = float(input("Enter Amount : "))
rate = float(input("Enter rate of interest : "))

interest = amount*rate/100
print ("Amount: ", amount, "Interest: ", interest)

程式要求使用者輸入金額和利率;並顯示如下結果 -

Enter Amount: 12500
Enter rate of interest: 6.5
Amount: 12500.0 Interest: 812.5

print() 函式

Python 的 print() 函式是一個內建函式。它是使用最頻繁的函式,它將括號內給定的 Python 表示式的值顯示在 Python 的控制檯或標準輸出(sys.stdout) 上。

print ("Hello World ")

括號內可以包含任意數量的 Python 表示式。它們必須用逗號分隔。列表中的每個專案可以是任何 Python 物件或有效的 Python 表示式。

#! /usr/bin/python3.11

a = "Hello World"
b = 100
c = 25.50
d = 5+6j
print ("Message: a)
print (b, c, b-c)
print(pow(100, 0.5), pow(c,2))

第一次呼叫 print() 顯示一個字串字面量和一個字串變數。第二個列印兩個變數的值及其差值。pow() 函式計算數字的平方根和變數的平方值。

Message Hello World
100 25.5 74.5
10.0 650.25

如果 print() 函式的括號中有多個用逗號分隔的物件,則這些值之間用空格 " " 分隔。要使用任何其他字元作為分隔符,請為 print() 函式定義一個sep引數。此引數應位於要列印的表示式列表之後。

在以下 print() 函式的輸出中,變數之間用逗號分隔。

#! /usr/bin/python3.11

city="Hyderabad"
state="Telangana"
country="India"
print(city, state, country, sep=',')

可以在結果中看到 sep=',' 的效果 -

Hyderabad,Telangana,India

print() 函式預設在末尾輸出一個換行符 ('\n')。因此,下一個 print() 語句的輸出出現在控制檯的下一行。

city="Hyderabad"
state="Telangana"
print("City:", city)
print("State:", state)

顯示兩行作為輸出 -

City: Hyderabad
State: Telangana

為了使這兩行出現在同一行,請在第一個 print() 函式中定義end引數並將其設定為空格字串 " "。

city="Hyderabad"
state="Telangana"
country="India"

print("City:", city, end=" ")
print("State:", state)

兩個 print() 函式的輸出都連續出現。

City: Hyderabad State: Telangana
廣告