非程序员的 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
变量存储数据。上面程序中的变量是a
、b23
、first_name
、b
和c
。两种基本类型是字符串和数字。字符串是字母、数字和其他字符的序列。在这个例子中,b23
和first_name
是存储字符串的变量。Spam
、Bill
、a + b is
、first_name is
和Sorted Parts, After Midnight or
是这个程序中的字符串。这些字符用"
或'
包围。另一种类型的变量是数字。请记住,变量用于存储值,它们不使用引号(" 和 ')。如果您想使用实际的值,您必须使用引号。
value1 == Pim
value2 == "Pim"
两者看起来相同,但在第一个中,Python 检查变量value1
中存储的值是否与变量Pim
中存储的值相同。在第二个中,Python 检查字符串(实际字母P
、i
和m
)是否与value2
中的字符串相同(继续阅读本教程以获取有关字符串和==
的更多解释)。
好的,所以我们有这些叫做变量的盒子,还有可以放入变量中的数据。计算机将看到类似first_name = "Bill"
这样的行,它将它解读为“将字符串Bill
放入盒子(或变量)first_name
中”。之后,它将看到语句c = a + b
,它将它解读为“将a + b
或123.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()
函数,该函数告诉变量是什么类型。数字的类型为int
或float
,分别代表整数和浮点数(主要用于十进制数)。文本字符串的类型为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)