跳转到内容

非程序员的 Python 3 教程/谁在那里?

来自维基教科书,为开放世界提供开放书籍

输入和变量

[编辑 | 编辑源代码]

现在我觉得是时候编写一个非常复杂的程序了。它就在这里

print("Halt!")
user_input = input("Who goes there? ")
print("You may pass,",  user_input)

运行它时,我的屏幕显示了以下内容

Halt!
Who goes there? Josh
You may pass, Josh

注意:在通过按下 F5 运行代码后,python shell 仅提供输出

Halt!
Who goes there?

您需要在 python shell 中输入您的姓名,然后按回车键以获得其余的输出。

当然,当您运行程序时,由于input()语句,您的屏幕看起来会不同。当您运行程序时,您可能注意到了(您确实运行了程序,对吧?)您必须输入您的姓名,然后按回车键。然后程序打印出更多文本以及您的姓名。这是一个输入的例子。程序到达某个点,然后等待用户输入一些数据,程序以后可以使用这些数据。

当然,如果我们没有地方存放从用户那里获取的信息,那么获取用户的信息将毫无用处,这就是变量发挥作用的地方。在前面的程序中,user_input是一个变量。变量就像一个可以存储一些数据的盒子。以下是一个显示变量示例的程序

a = 123.4
b23 = 'Spam'
first_name = "Bill"
b = 432
c = a + b
print("a + b is",c)
print("first_name is",first_name)
print("Sorted Parts, After Midnight or",b23)

这是输出

a + b is 555.4
first_name is Bill
Sorted Parts, After Midnight or Spam

变量存储数据。上面程序中的变量是ab23first_namebc。两种基本类型是字符串数字。字符串是字母、数字和其他字符的序列。在这个例子中,b23first_name是存储字符串的变量。SpamBilla + b isfirst_name isSorted Parts, After Midnight or是这个程序中的字符串。这些字符用"'包围。另一种类型的变量是数字。请记住,变量用于存储值,它们不使用引号(" 和 ')。如果您想使用实际的,您必须使用引号。

value1 == Pim
value2 == "Pim"

两者看起来相同,但在第一个中,Python 检查变量value1中存储的值是否与变量Pim中存储的值相同。在第二个中,Python 检查字符串(实际字母Pim)是否与value2中的字符串相同(继续阅读本教程以获取有关字符串和==的更多解释)。

好的,所以我们有这些叫做变量的盒子,还有可以放入变量中的数据。计算机将看到类似first_name = "Bill"这样的行,它将它解读为“将字符串Bill放入盒子(或变量)first_name中”。之后,它将看到语句c = a + b,它将它解读为“将a + b123.4 + 432的总和(等于555.4)放入c中”。语句的右侧(a + b)被评估,结果存储在左侧的变量(c)中。这被称为赋值,您不应该将赋值等号(=)与这里的数学意义上的“等式”混淆(那是==将在以后用到的)。

以下是一个关于变量用法的另一个例子

a = 1
print(a)
a = a + 1
print(a)
a = a * 2
print(a)

当然,这是输出

1
2
4

即使同一个变量出现在等号的两侧(例如,spam = spam),计算机仍然将它解读为,“首先找出要存储的数据,然后找出数据存储的位置”。

在我结束本章之前,再写一个程序

number = float(input("Type in a number: "))
integer = int(input("Type in an integer: "))
text = input("Type in a string: ")
print("number =", number)
print("number is a", type(number))
print("number * 2 =", number * 2)
print("integer =", integer)
print("integer is a", type(integer))
print("integer * 2 =", integer * 2)
print("text =", text)
print("text is a", type(text))
print("text * 2 =", text * 2)

我得到的输出是

Type in a number: 12.34
Type in an integer: -3
Type in a string: Hello
number = 12.34
number is a <class 'float'>
number * 2 = 24.68
integer = -3
integer is a <class 'int'>
integer * 2 = -6
text = Hello
text is a <class 'str'>
text * 2 = HelloHello

请注意,number是用float(input())创建的,int(input())返回一个整数,一个没有小数点的数字,而text是用input()创建的,返回一个字符串(也可以写成str(input()))。当您希望用户输入一个十进制数时,请使用float(input()),如果您希望用户输入一个整数,请使用int(input()),但如果您希望用户输入一个字符串,请使用input()

程序的后半部分使用type()函数,该函数告诉变量是什么类型。数字的类型为intfloat,分别代表整数浮点数(主要用于十进制数)。文本字符串的类型为str,代表字符串。整数和浮点数可以由数学函数运算,字符串则不行。注意,当 Python 将一个数字乘以一个整数时,会发生预期的事情。但是,当一个字符串乘以一个整数时,结果是产生字符串的多个副本(即,text * 2 = HelloHello)。

字符串的运算与数字的运算不同。此外,某些运算只适用于数字(整数和浮点数),如果使用字符串,则会报错。以下是一些交互模式示例,以进一步说明这一点。

>>> print("This" + " " + "is" + " joined.")
This is joined.
>>> print("Ha, " * 5)
Ha, Ha, Ha, Ha, Ha, 
>>> print("Ha, " * 5 + "ha!")
Ha, Ha, Ha, Ha, Ha, ha!
>>> print(3 - 1)
2
>>> print("3" - "1")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'
>>> 

以下是关于一些字符串运算的列表

运算 符号 示例
重复 * "i" * 5 == "iiiii"
连接 + "Hello, " + "World!" == "Hello, World!"

Rate_times.py

# This program calculates rate and distance problems
print("Input a rate and a distance")
rate = float(input("Rate: "))
distance = float(input("Distance: "))
time=(distance/ rate)
print("Time:", time)

示例运行

Input a rate and a distance
Rate: 5
Distance: 10
Time: 2.0
Input a rate and a distance
Rate: 3.52
Distance: 45.6
Time: 12.9545454545

Area.py

# This program calculates the perimeter and area of a rectangle
print("Calculate information about a rectangle")
length = float(input("Length: "))
width = float(input("Width: "))
Perimeter=(2 * length + 2 * width) 
print("Area:", length * width)
print("Perimeter:",Perimeter)

示例运行

Calculate information about a rectangle
Length: 4
Width: 3
Area: 12.0
Perimeter: 14.0
Calculate information about a rectangle
Length: 2.53
Width: 5.2
Area: 13.156
Perimeter: 15.46

Temperature.py

# This program converts Fahrenheit to Celsius
fahr_temp = float(input("Fahrenheit temperature: "))
celc_temp = (fahr_temp - 32.0) *( 5.0 / 9.0)
print("Celsius temperature:", celc_temp)

示例运行

Fahrenheit temperature: 32
Celsius temperature: 0.0
Fahrenheit temperature: -40
Celsius temperature: -40.0
Fahrenheit temperature: 212
Celsius temperature: 100.0
Fahrenheit temperature: 98.6
Celsius temperature: 37.0

编写一个程序,从用户那里获取 2 个字符串变量和 2 个数字变量,将它们连接在一起(无空格),并显示字符串,然后在新行上将两个数字相乘。

解决方案

编写一个程序,从用户那里获取 2 个字符串变量和 2 个数字变量,将它们连接在一起(无空格),并显示字符串,然后在新行上将两个数字相乘。

  
string1 = input('String 1: ')
string2 = input('String 2: ')
float1 = float(input('Number 1: '))
float2 = float(input('Number 2: '))
print(string1 + string2)
print(float1 * float2)


非程序员的 Python 3 教程
 ← 你好,世界 谁在那里? 数到 10 → 
华夏公益教科书