本文将探索:
【探索内容】
1.print
1.1 打印多个参数
print可用于打印一个表达式(这个表达式要么是字符串,要么将自动转换为字符串。)
print("hello, world")
可同时打印多个表达式,条件是用逗号分隔它们:
print("huahua",18)
如果仔细观察,你会发现结果huahua 18中间有一个空格,这看起来没有大问题,但是,有时候,你可能不想要空格,在数据之间也许你需要的是:也行是什么都需要,可以这样写:
print("huahua",18, sep=":")
再看看下面的栗子,
print("huahua",18, sep="_")
此刻一切都明了了,sep="_"的作用就是多个表达式的分割符号,平时没有写入时候,print默认分隔符为空格。
2.赋值语句
2.1序列解包
一开始我们见到的赋值语句诸如a = 2 或者 a = [1,2,3]等,赋值符号左边是一个数据,将赋值符号右边的数据赋给赋值符号左边的数据。实际上,还可以同时(并行)给多个变量赋值:
x, y, z = 1, 2, 3
print(x, y, z)
使用这种方式还可交换多个变量的值。
x, y, z = 1, 2, 3
x, y, z = z, y, x
print(x, y, z)
实际上,这里执行的操作称为序列解包(或可迭代对象解包):将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中。不多说,看栗子:
从输出结果中,可看到(1, 2, 3)标志性的圆括号,a 是元组。
第1行代码 a = 1, 2, 3实质上是 a = (1, 2, 3),即将元组(1, 2, 3)赋值给a;
第3行代码x, y, z = a ,即x, y, z = 1, 2, 3 即 x, y, z = (1, 2, 3)即(x, y, z )= (1, 2, 3)
如果你感到困惑或怀疑,可以动手敲一敲,看看运行结果,毕竟,实践是检验真理的唯一标准嘛。
此外,要解包的序列包含的元素个数必须与你在等号左边列出的目标个数相同,否则Python将引发异常。
可使用星号运算符( *)来收集多余的值,这样无需确保值和变量的个数相同,如:
a, b, *rest = [1, 2, 3, 4]
print(rest)
星号换个位置试试:
a, *rest, b= [1, 2, 3, 4]
print(rest)
注:赋值语句的右边可以是任何类型的序列,但带星号的变量最终包含的总是一个列表。在变量和值的个数相同时亦如此。
a, *rest, b= 1, 2, 3
print(a)
print(rest)
print(b)
2.2 增强赋值
x = x + 1 也可写成 x += 1(这称为增强赋值,适用于所有标准运算符,如 -、*、%、/等均可这样写)
使用增强赋值,可让代码更紧凑、更简洁,同时在很多情况下的可读性更强。
3.input:获取用户输入
如果我们想以交互的方式获取一个数据,
通常只单独获取一个数据,而不对它进行任何操作,意义不大,我们会选择将数据存在变量中,如
a = input("请输入一个数字:")
print(a)
这看起来很简便也很完美,实质上却有一个巨大的陷阱,那就是计算机通过input获取的数据类型是字符串,也许你以为输入了数字9,而实际上,并非如此,我们可以做个小实验:
【挑战】
- a = 1,b = 2,使用两种不同方法,交换变量a,b的值。
- 通过input函数获取两个数的值,并将其相乘,打印输出结果。