在本章中,我们将学习 Python 如何接受来自控制台的用户输入,并在同一控制台上显示输出。
每个计算机应用程序都应该在其运行时提供接受用户输入的功能。这使得应用程序具有交互性。根据其开发方式,应用程序可能会以文本输入到控制台(sys.stdin)、图形界面或基于 Web 的界面的形式接受用户输入。
Python 用户输入函数
Python 提供了两个内置函数来从键盘读取输入。
input()
函数
Python 的 input()
函数完成了在运行时为变量赋不同值的工作。
input()
函数的语法如下:
>>> var = input()
当解释器遇到 input()
函数时,它会等待用户从标准输入流(键盘)输入数据直到按下回车键。这一串字符可以存储在一个字符串变量中以供进一步使用。
在读取到回车键后,程序继续执行下一条语句。让我们修改我们的程序以便在 name
和 city
变量中存储用户输入。
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()
函数内部,你可以提供一个提示文本,当运行代码时它会出现在光标前。
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()
函数重写上面的程序:
name = raw_input("Enter your name - ")
city = raw_input("Enter city name - ")
print("Hello My name is", name)
print("I am from", city)
当你运行时,你会发现光标正在等待用户的输入。输入 name
和 city
的值。使用输入的数据,输出将被显示。
Enter your name - Ravi
Enter city name - Chennai
Hello My name is Ravi
I am from Chennai
在 Python 中获取数值输入
让我们编写一个 Python 代码,该代码接受用户输入的矩形的宽度和高度并计算面积。
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"
是字符串,显然你不能执行两个字符串的乘法。
为了解决这个问题,我们可以使用 Python 标准库中的另一个内置函数 int()
。它将字符串对象转换为整数。
为了从用户那里接受整数输入,首先读取字符串形式的输入,然后使用 int()
函数将其类型转换为整数。
w = input("Enter width : ")
width = int(w)
h = input("Enter height : ")
height = int(h)
你可以将输入和类型转换语句合并成一个:
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
,然后计算金额的利息。
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 控制台或标准输出(sys.stdout)上显示括号内提供的 Python 表达式的值。
print("Hello World ")
括号内可以有任意数量的 Python 表达式。它们必须由逗号符号分隔。列表中的每一项可以是任何 Python 对象或有效的 Python 表达式。
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()
函数的输出中,变量之间用逗号分隔:
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