(3)Python基础到实战-变量

变量是程序的基本组成单位。

一:变量的组成

(1).变量的三个基本要素:

 1.类型 2.名称 3.值
 a  =  60
 print(a)        
 b = 40
 print(b)

1.这里的变量的名称就是a, 变量的值是60, 60是int类型(整数类型)
2.定义的一个变量,变量的名称是b,变量的值是40,40是int类型(整数类型)

当代码执行后,变量的值是存在计算机的内存的

(2)内存

     含义:内存是计算机的重要部件,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储交换的数据,它是外存于CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行。

具体如下图所示:
(3)Python基础到实战-变量_第1张图片

变量的使用:

只能下定义,再使用的原则,否则程序会报错;

例如代码如下:

print(a) 
a = 30

代码运行如下

File "E:\PythonProject2\PythonProject\01_var_example.py", line 1, in <module>
 print(a) NameError: name 'a' is not defined

**程序运行之后就会报not defined 的错误,所以使用变量必须有先后原则。

现在我来定义四个变量,看程序输出结果:
第一种方式:
代码演示:

#演示记录人的信息并输出的程序
name = "tom"  #字符串
age = 20   #整形
score = 90.4 #浮点型(小数)
gender = "男"  #字符串
#输出信息
print("个人信息如下")
print(name)
print(age)
print(gender)
print(score)

运代码运行如下:
个人信息如下
tom
2090.4

进程已结束,退出代码为0

由上述程序可见,已经定义了四个变量,输出的结果分别是变量的值。
所以变量相当于内存中的一个数据存储空间的表示。

第二种定义变量的方式:

代码实现:
#演示记录人的信息并输出的程序
name = "tom"  #字符串
age = 20   #整形
score = 90.4 #浮点型(小数)
gender = "男"  #字符串
#输出信息
#print("个人信息如下")
#print(name)
#print(age)
#print(gender)
#print(score)
print("个人信息如下:",name,age,gender,score)

代码运行如下:
个人信息如下: tom 2090.4

上述两种方式都可以进行变量的定义和输出,唯一的区别就是输出所展现的方式不一样,这里还要注意的是,代码所用的引号和逗号必须使用英文字符进行表示。否则程序会报错。

格式化输出

1.%操作符
2.format()函数
3. f-strings

代码实现如下:

#关于格式化输出
#定义变量
age = 50
score = 77.5
gender = '男'
name = '杰克'
print("个人信息:%s-%d-%s-%.2f" %(name,age,gender,score))
代码运行:
个人信息:杰克-50--77.50

进程已结束,退出代码为 0

占位符替换*:
字符串中的 %s%d%.2f 等是占位符,% 操作符会将右侧元组中的值按顺序替换到这些位置。也就是说家里%,就将原来的输出位置顺序age,score,gender,name替换成name,age,gender,score

  1. 格式控制
    • %s:将变量转为字符串(适用任意类型,自动转换)。
    • %d:将变量格式化为十进制整数
    • %f:将变量格式化为浮点数%.2f 表示保留两位小数。
    • 其他格式符(如 %x 十六进制)也可按需使用。

示例解析:

print("个人信息:%s-%d-%s-%.2f" % (name, age, gender, score))
  • %sname(字符串 “杰克”)
  • %dage(整数 50)
  • %sgender(字符串 “男”)
  • %.2fscore(浮点数 77.5,格式化为 77.50)
    格式符字母对应数据类型(如s=字符串,d=十进制整数,f=浮点数)

注意事项:

  • 顺序匹配:占位符顺序需与右侧元组中的变量一一对应
  • 类型兼容:变量类型需与占位符兼容(如 %d 对应整数,否则可能报错)。

**

对于这些字母的使用规则和拓展:

**

1. 核心规律:字母对应数据类型

格式符的字母通常是英文单词的首字母缩写类型标识,直接关联目标数据类型:

格式符 含义 对应类型 示例
%s 字符串 (String) 任意对象(自动调用 str() "Name: %s" % "Tom"
%d 十进制整数 (Decimal) 整数(或可转为整数的对象) "Age: %d" % 25
%f 浮点数 (Float) 浮点数或可转为浮点数的对象 "Price: %.2f" % 3.1415
%x 十六进制整数 (heX) 整数 "Hex: %x" % 255ff
%o 八进制整数 (Octal) 整数 "Octal: %o" % 64100

2. 为什么用这些字母?

  • %s(字符串)
    sString 的首字母,表示将变量转换为字符串(即使传入非字符串类型,也会调用 str() 自动转换)。
    例如:"%s" % 3.14"3.14"(数值被转为字符串)。

  • %d(整数)
    dDecimal(十进制)的缩写,表示将变量格式化为十进制整数。若传入浮点数,会直接截断小数部分。
    例如:"%d" % 3.99"3"(不会四舍五入)。

  • %f(浮点数)
    fFloat 的首字母,表示将变量格式化为浮点数。可通过 %.2f 控制小数位数。
    例如:"%.2f" % 3.1415"3.14"


3. 类型强制转换规则

  • %s 最灵活:可接受任意类型(如整数、浮点数、对象),自动调用 str() 转为字符串。

    print("%s" % 50)      # 输出 "50"(整数→字符串)
    print("%s" % 3.14)    # 输出 "3.14"(浮点数→字符串)
    
  • %d%f 严格:要求变量必须是整数或浮点数(或可隐式转换的类型),否则会报错。

    print("%d" % "50")    # 报错!字符串无法直接转为整数
    print("%d" % 50.5)    # 输出 "50"(浮点数截断为整数)
    

4. 扩展格式控制

除了字母,格式符还支持更复杂的格式控制(通过添加符号和数字):

  • %10s:字符串宽度为 10,右对齐(不足补空格)。
  • %-5d:整数宽度为 5,左对齐。
  • %06d:整数宽度为 6,不足补零(如 42000042)。

示例:

print("Name: %10s, Age: %05d" % ("Tom", 25))
# 输出:Name:        Tom, Age: 00025

format()函数使用:

代码如下:

#定义变量
age = 50
score = 77.5
gender = '男'
name = '杰克'
print("个人信息:{} {} {}".format(name,age,gender))
输出:
个人信息:杰克 50

format()函数在这里的作用:format()将变量name,age,gender按顺序插入字符串的{}占位符位置,生成格式化后的字符串。

format() 的核心作用

(1) 字符串动态拼接
  • 占位符替换:用 {} 标记需要插入变量的位置。
  • 自动类型转换:无需指定数据类型(如 %s%d),自动将变量转为字符串。
    # 示例中无需区分字符串、整数,直接替换
    "{} {} {}".format("字符串", 123, 3.14)"字符串 123 3.14"
    
(2) 灵活性
  • 支持任意数据类型:数字、字符串、对象等均可直接插入。
  • 顺序控制:可自定义插入顺序,重复使用变量。

3. format() 的常见用法

(1) 按位置顺序插入

默认按参数顺序填充:

print("{}的年龄是{}".format("张三", 25))  # 输出:张三的年龄是25
(2) 通过索引指定顺序
  • 通过 {0}, {1} 控制参数顺序,支持重复使用:
    print("{1}的分数是{0}, {1}的年龄是{2}".format(90, "李四", 30))
    # 输出:李四的分数是90, 李四的年龄是30
    
(3) 关键字参数
  • 使用变量名作为占位符,提高可读性:
    print("姓名:{name}, 年龄:{age}".format(name="王五", age=40))
    # 输出:姓名:王五, 年龄:40
    
(4) 混合使用位置和关键字参数
  • 位置参数需在前,关键字参数在后:
    print("{0}的性别是{gender}".format("赵六", gender="女"))
    # 输出:赵六的性别是女
    

f-strings的使用

代码实现如下:
age = 50
score = 77.5
gender = '男'
name = '杰克'
print(f"个人信息:{name} {age} {score} {gender}")
输出:
个人信息:杰克 50 77.5

此段代码中f-string的作用:

  • 作用:f“…”是格式化字符串
  • (f-string),它会在运行时将{}内的变量替换为它们的值。
  • **输出结果:**个人信息:杰克 50 77.5 男
  • {name} → 杰克
  • {age} → 50
  • {score} → 77.5
  • {gender} → 男

2.f-strings 的扩展用法

f-strings 功能强大,支持复杂操作,以下是常见扩展用法:

1. 表达式计算

可以直接在 {} 内写表达式:

print(f"总分:{score * 2}")  # 输出:总分:155.0
2. 调用方法或函数
print(f"姓名大写:{name.upper()}")  # 输出:姓名大写:杰克(假设 name 是英文)
3. 格式化数字

控制小数位数、补零、对齐等:

print(f"分数:{score:.1f}")  # 保留1位小数 → 分数:77.5
print(f"编号:{5:03d}")      # 补零到3位 → 编号:005
4. 对齐与填充

控制字符串对齐和宽度:

print(f"姓名:{name:<10}")  # 左对齐,宽度10字符 → 姓名:杰克      
print(f"分数:{score:>10}") # 右对齐,宽度10字符 → 分数:      77.5
5. 字典操作

直接访问字典的值:

person = {"name": "杰克", "age": 50}
print(f"信息:{person['name']} {person['age']}")  # 输出:信息:杰克 50
6. 转义大括号

输出单个 {}

print(f"{{name}}的值是{name}")  # 输出:{name}的值是杰克
7. 日期格式化

结合 datetime 模块:

from datetime import datetime
now = datetime.now()
print(f"当前时间:{now:%Y-%m-%d %H:%M}")  # 输出:当前时间:2023-10-05 14:30

在程序中“+”的使用原则:

1.当左右两边都是数值型时,则做加法运算
2.当左右两边都是字符串,则做拼接运算

实例代码如下

#程序中+的使用
name = "King"  #这是字符串
score = 40.5   #这是数值
num1 = 10      #这是数值
str1 = "OK"    #这是字符串
print(score + num1)
print(name + str1)
print(score + 90)
print(name +"hi")
print("100"+"98")
print(34.6 + 100)
运行输出:
50.5
KingOK
130.5
Kinghi
10098
134.6

进程已结束,退出代码为 0

从以上代码可以看出,都是数值时则相加,都是字符串时,则拼接。那么现在就有另一个问题,如果在“+”左右是数值和字符串,又会如何呢,是否可以这样操作。
代码实现如下

score = 30
print("100"+30)
输出:
    print("100"+30)
TypeError: can only concatenate str (not "int") to str

此时代码会报错,在python中在你的代码中,“100” 是一个字符串,而 30 是一个整数。Python 不允许直接将字符串和数值相加,因为它们的类型不兼容,所以会抛出 TypeError。如果想要拼接成功,则需要将两边的数值类型转换成同一类型即可。

  1. 如果你想要拼接字符串
    将整数转换为字符串,使用 str() 函数:
score = 30
print("100" + str(score))  
 输出:10030
  1. 如果你想要进行算术加法
    将字符串转换为整数,使用 int() 函数:
score = 30
print(int("100") + score)  
 输出:130

拓展:+ 的其他用法
列表拼接:

  • 也可以用于拼接两个列表:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1 + list2)  # 输出:[1, 2, 3, 4, 5, 6]

元组合并:

  • 可以用于合并两个元组:
tuple1 = (1, 2)
tuple2 = (3, 4)
print(tuple1 + tuple2)  
 输出:(1, 2, 3, 4)

这就是“+”在程序中的一些基本用法,还有其它的用法后面再进行拓展。

你可能感兴趣的:(Python语言学习专栏,python,android,开发语言)