【Python案例】个人信息登记 —— 链式赋值与动态类型
案例需求
做“个人信息登记”程序时会碰到两件小事:登记表里有些栏目(比如“年级”“班级”)大家填的内容完全一样,没必要一格一格地填;同一个栏目,有时填的是数字,有时填的又变成文字。下面用两小段代码分别体验这两种情况。
- 用一行代码把
100同时赋给a、b、c三个变量,并打印出来; - 让变量
x先保存整数10,再改存字符串"变量可以变身",最后改存浮点数3.14,每次都要打印变量x的值和它的数据类型。
案例实现
第 1 步:同时为变量a、b、c赋相同的值100,并把三个变量的值打印输出。
这里用的是链式赋值:把最右边的值依次赋给左边的各个变量(先给c,再给b,最后给a)。
a=b=c=100print("a, b, c =",a,b,c)第 2 步:给变量x赋整数值10,然后打印x的值和数据类型。
x=10print("x =",x,type(x))第 3 步:把变量x的值改成字符串"变量可以变身",再打印x的值和数据类型。注意:x这个名字没有变,变的只是它里面装的东西。
x="变量可以变身"print("x =",x,type(x))第 4 步:把变量x的值再改成浮点数3.14,并打印x的值和数据类型。
x=3.14print("x =",x,type(x))完整代码:
a=b=c=100print("a, b, c =",a,b,c)x=10print("x =",x,type(x))x="变量可以变身"print("x =",x,type(x))x=3.14print("x =",x,type(x))运行结果:
a, b, c = 100 100 100 x = 10 <class 'int'> x = 变量可以变身 <class 'str'> x = 3.14 <class 'float'>案例解析
- 链式赋值:
a = b = c = 100等价于a = 100、b = 100、c = 100,也就是用一条语句同时给多个变量赋上同一个值。三个变量一开始都等于100,之后给其中任意一个变量重新赋值,只是改变它自己的指向,另外两个变量的值不受影响。 - 动态类型:Python 的变量不需要事先声明类型,同一个变量可以先后装不同类型的数据,变量是什么类型,由它当时装着的值决定。这是 Python 灵活、易上手的地方。
- 注意可读性:虽然变量可以“变身”,但对读代码的人来说并不友好。编写程序时,最好让一个变量自始至终只装一种类型的数据。
相关练习
一、题目
1.(选择题)执行a = b = c = 5之后,变量b的值是( )。
- A.
0 - B.
5 - C.
None - D. 程序报错
2.(填空题)先执行x = 1,再执行x = "abc",此时type(x)的结果是______________。
3.(判断题)同一个变量在程序运行过程中只能装一种类型的数据。( )
4.(简答题)请用一行代码把数字100同时赋给变量n1、n2、n3。
二、参考答案与解析
1. 答案:B
解析:链式赋值会把最右边的值依次赋给左边的每一个变量,所以a、b、c都等于5。
2. 答案:<class 'str'>
解析:变量x最后一次被赋值为"abc",带引号的是字符串,所以type(x)的结果是<class 'str'>;只写类型名str也算正确。
3. 答案:错误(×)
解析:这句话说反了。Python 是动态类型语言,变量的类型跟着它当时装着的值走,随时可以改存其他类型的数据,所以“只能装一种类型”不成立。
4. 答案:
n1=n2=n3=100解析:链式赋值,用一串等号把多个变量名串起来,最右边的
100会被依次赋给左边的每一个变量。
声明:本文部分内容由人工智能辅助生成。