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
广告