跳至内容

面向非程序员的 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

以上程序中的变量是ab23first_namebc。Python 中的变量可以存储任何类型的数据 - 在本例中,我们存储了一些字符串(例如,“Bill”)和一些数字(例如,432)。

注意字符串和变量名之间的区别。字符串用引号标记,这告诉计算机“不要尝试理解,只需按原样获取此文本”

print "first_name"

这将打印文本

first_name

按原样。变量名没有引号,指示计算机“使用我之前在此名称下存储的值”

print first_name

这将打印(在之前的示例之后)

Bill

好的,所以我们有这些叫做变量的盒子,以及可以放入变量中的数据。计算机将看到类似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

即使两边都是同一个变量,计算机仍然将其解释为“首先找出要存储的数据,然后找出数据要存储的位置”。

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

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()

程序的后半部分使用type(),它告诉您变量是什么。数字的类型为intfloat,分别代表整数浮点数(主要用于小数)。文本字符串的类型为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
  1. 编写一个程序,从用户那里获取 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


华夏公益教科书