面向非程序员的 Python 2.6 教程/谁在那里?
现在我觉得是时候写一个真正复杂的程序了。它在这里
print "Halt!"
user_reply = raw_input("Who goes there? ")
print "You may pass,", user_reply
(用户回应:使用 Linux 和 Geany 编辑器...唯一显示的选项是 'user_return'...输出正确。但是,当手动输入 'user_reply' 时,也能正常工作,尽管 Geany 中没有显示为选项...这两个之间有什么功能上的区别?)
当我运行它时,我的屏幕显示了以下内容
Halt! Who goes there? Josh You may pass, Josh
注意:在通过按下 F5 运行代码后,Python Shell 将只给出输出
Halt! Who goes there?
您需要在 Python Shell 中输入您的姓名,然后按 Enter 键才能获得其余的输出。
当然,当您运行程序时,由于raw_input()
语句,您的屏幕将看起来不同。当您运行程序时,您可能已经注意到(您确实运行了程序,对吧?),您需要输入您的姓名,然后按 Enter 键。然后程序打印出一些额外的文本,以及您的姓名。这是一个输入的示例。程序到达某个点,然后等待用户输入一些数据,以便程序以后使用。
当然,如果我们没有地方存放从用户那里获得的信息,那么获取用户信息将毫无用处,这就是变量的用武之地。在前面的程序中,user_reply
是一个变量。变量就像一个可以存储一些数据的盒子。以下是一个显示变量示例的程序
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
。Python 中的变量可以存储任何类型的数据 - 在本例中,我们存储了一些字符串(例如,“Bill”)和一些数字(例如,432)。
注意字符串和变量名之间的区别。字符串用引号标记,这告诉计算机“不要尝试理解,只需按原样获取此文本”
print "first_name"
这将打印文本
first_name
按原样。变量名没有引号,指示计算机“使用我之前在此名称下存储的值”
print first_name
这将打印(在之前的示例之后)
Bill
好的,所以我们有这些叫做变量的盒子,以及可以放入变量中的数据。计算机将看到类似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
即使两边都是同一个变量,计算机仍然将其解释为“首先找出要存储的数据,然后找出数据要存储的位置”。
在结束本章之前,再写一个程序
number = input("Type in a number: ")
text = raw_input("Type in a string: ")
print "number =", number
print "number is a", type(number)
print "number * 2 =", number * 2
print "text =", text
print "text is a", type(text)
print "text * 2 =", text * 2
我得到的输出是
Type in a Number: 12.34 Type in a String: Hello number = 12.34 number is a <type 'float'> number * 2 = 24.68 text = Hello text is a <type 'str'> text * 2 = HelloHello
注意number
是使用input()
获取的,而text
是使用raw_input()
获取的。raw_input()
返回一个字符串,而input()
返回一个数字。当您希望用户输入一个数字时,请使用input()
,但如果您希望用户输入一个字符串,请使用raw_input()
。
只有在您信任使用运行程序的计算机的用户时,才使用 input() 。输入到 input() 对话框中的所有内容都将作为 Python 表达式进行评估,因此允许用户控制您的程序。例如,输入__import__('os').system('dir') 将执行dir 命令。您应该改为获取一个字符串并将其转换为必要的类型,例如int(raw_input()) 或float(raw_input()) 。 |
程序的后半部分使用type()
,它告诉您变量是什么。数字的类型为int
或float
,分别代表整数和浮点数(主要用于小数)。文本字符串的类型为str
,代表字符串。整数和浮点数可以使用数学函数进行运算,字符串则不能。注意,当 Python 将一个数字乘以一个整数时,会发生预期的事情。但是,当字符串乘以一个整数时,结果是字符串的多个副本被生成(即,text * 2 = HelloHello
)。
字符串的运算与数字的运算不同。以下是一些交互模式示例,以进一步说明这一点。
>>> "This" + " " + "is" + " joined." 'This is joined.' >>> "Ha, " * 5 'Ha, Ha, Ha, Ha, Ha, ' >>> "Ha, " * 5 + "ha!" 'Ha, Ha, Ha, Ha, Ha, ha!' >>>
这也可作为程序进行
print "This" + " " + "is" + " joined."
print "Ha, " * 5
print "Ha, " * 5 + "ha!"
以下是部分字符串运算的列表
运算 | 符号 | 示例 |
---|---|---|
重复 | *
|
"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 = input("Rate: ")
distance = input("Distance: ")
print "Time:", (distance / rate)
示例运行
Input a rate and a distance Rate: 5 Distance: 10 Time: 2
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 = input("Length: ")
width = input("Width: ")
print "Area", length * width
print "Perimeter", 2 * length + 2 * width
示例运行
Calculate information about a rectangle Length: 4 Width: 3 Area 12 Perimeter 14
Calculate information about a rectangle Length: 2.53 Width: 5.2 Area 13.156 Perimeter 15.46
temperature.py
# Converts Fahrenheit to Celsius
temp = input("Fahrenheit temperature: ")
print (temp - 32.0) * 5.0 / 9.0
示例运行
Fahrenheit temperature: 32 0.0
Fahrenheit temperature: -40 -40.0
Fahrenheit temperature: 212 100.0
Fahrenheit temperature: 98.6 37.0
- 编写一个程序,从用户那里获取 2 个字符串变量和 2 个整数变量,将它们连接起来(将它们组合在一起,中间没有空格),并显示这些字符串,然后在新行中将这两个数字相乘。
编写一个程序,从用户那里获取 2 个字符串变量和 2 个整数变量,将它们连接起来(将它们组合在一起,中间没有空格),并显示这些字符串,然后在新行中将这两个数字相乘。
string1 = raw_input('String 1: ')
string2 = raw_input('String 2: ')
int1 = input('Integer 1: ')
int2 = input('Integer 2: ')
print string1 + string2
print int1 * int2
另一个解决方案
print "this is an exercise"
number_1 = input("please input the first number: ")
number_2 = input("Please input the second number: ")
string_1 = raw_input("Please input the first half of the word: ")
string_2 = raw_input("please input the second half of the word: ")
print "the words you input is '" + string_1 + string_2 + "'"
print "the result of the 2 numbers is:", number_1 * number_2