python变量

Python使用等号()作为赋值运算符,例如a = 20就是一条赋值语句,这条语句用于将20装入变量a中,这个过程就被称为赋值,即将 20赋值给变量a

注意,变量名其实就是标识符,因此在命名时,既要遵守Python 标识符命名规范,还要避免和Python 内置函数以及Python 保留字重名。

C语言为例:

 int a = 20

这行C语言代码的意思是,声明一个整形变量a来存储整数20,这就意味着,我们无法用a存储小数、字符以及字符串等其他类型数据,这类编程语言被称为强类型语言

和强类型语言相对应的是弱类型语言

  1. 变量无须声明即可直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
  2. 变量的数据类型可以动态改变:同一个变量可以一会儿被赋值为整数值,一会儿被赋值为字符串。
#定义一个数值类型变量
a = 5
print(a)
#重新将字符串赋值给a变量
a = 'Hello , Charlie'
print(a)
print(type(a))

输出结果:

5
Hello , Charlie
<type 'str'>

整型

整形专门用来表示整数,即没有小数部分的数。在Python中,整数包括正整数、0 和负整数。

#定义变量a,赋值为56
a = 56
print(a)
#为a赋值一个大整数
a = 9999999999999999999999
print(a)
#type()函数用于返回变量的类型
print(type (a))

使用Python 3.x运行上面程序,可以看到如下输出结果:

56
9999999999999999999999
<class 'int'>

Python的整型数值有 4 种表示形式:

  1. 十进制形式:最普通的整数就是十进制形式的整数,在使用十进制表示整数值时,不能以0(零)作为十进制数的开头(数值是0除外)。
  2. 二进制形式:由01组成,以0b0B开头。例如,101对应十进制数是5
  3. 八进制形式:八进制整数由0~7组成,以0o0O开头(第一个字母是零,第二个字母是大写或小写的 O)。需要注意的是,在Python 2.x中,八进制数值还可以直接以0(零)开头。
  4. 十六进制形式:由0~9以及A~F(或 a~f)组成,以0x0X开头
#以0x或0X开头的整型数值是十六进制形式的整数
hex_value1 = 0x13
hex_value2 = 0XaF
print("hexValue1 的值为:",hex_value1)
print("hexValue2 的值为:",hex_value2)
#以0b或0B开头的整型数值是二进制形式的整数
bin_val = 0b111
print('bin_val的值为:',bin_val)
bin_val = 0B101
print('bin_val的值为:',bin_val)
#以0o或0O开头的整型数值是八进制形式的整数
oct_val = 0o54
print('oct_val 的值为:',oct_val)
oct_val = 0O17
print('oct_val 的值为:',oct_val)

浮点型

浮点型数值用于保存带小数点的数值,Python的浮点数有两种表示形式:

  • 十进制形式:这种形式就是平常简单的浮点数,例如5.12512.00.512。浮点数必须包含一个小数点,否则会被当成整数类型处理。
  • 科学计数形式:例如5.12e2(即5.12×102)、5.12E2(也是5.12 ×102)。
af1 = 5.2345556
#输出af1的值
print("af1的值为:",af1)
af2 = 25.2345
print("af2的类型为:",type(af2))
f1=5.12e2
print("f1的值为:",f1)
f2 = 5e3
print("f2的值为:",f2)
print("f2的类型为:",type(f2))#看到类型为float

, 通过第 8 行代码可以看出,虽然5e3的值是5000,但它依然是浮点型值,而不是整型值,因为Python会自动将该数值变为5000.0

字符串

Python要求,字符串必须使用引号括起来,可以使用单引号或者双引号,只要成对即可。字符串中的内容几乎可以包含任何字符,英文字符也行,中文字符也行。

str1 = 'c.biancheng.net'
str2 = "C语言中文网"
print(str1)
print(str2)

如果字符串内容本身包含了单引号或双引号,此时就需要进行特殊处理:

  1. 使用不同的引号将字符串括起来。
  2. 对引号进行转义。

假如字符串内容中包含了单引号,则可以使用双引号将字符串括起来。

str3 = "I'm a coder"
print(str3)

假如字符串内容本身包含双引号,则可使用单引号将字符串括起来 。

str4 = '"Spring is here,let us jam!", said woodchuck.'

假如字符串既包含单引号,又包含双引号,此时就可以使用转义字符, Python 允许使用反斜线(\)将字符串中的特殊字符进行转义。

str5 = '"we are scared,Let\'s hide in the shade",says the bird'

Python允许使用转义字符(\)对换行符进行转义,转义之后的换行符不会“中断”字符串, 故程序使用了转义字符(\)对内容进行了转义,这样就可以把一个字符串写成两行。

s2 = 'The quick brown fox \
jumps over the lazy dog'
print(s2)

长字符串

Python使用三个引号(单引号、双引号都行)来包含多行注释内容,其实这是长字符串的写法,只是由于在长字符串中可以放置任何内容,包括放置单引号、双引号都可以,如果所定义的长字符串没有赋值给任何变量,那么这个字符串就相当于被解释器忽略了,也就相当于注释掉了。

实际上,使用三个引号括起来的长字符串完全可以赋值给变量,例如如下程序:

s = '''"Let's go fishing", said Mary.
"OK, Let's go", said her brother.
they walked to a lake'''
print(s)

使用三个引号定义了长字符串,该长字符串中既可包含单引号,也可包含双引号。

原始字符串

由于字符串中的反斜线都有特殊的作用,因此当字符串中包含反斜线时,就需要使用转义字符\对字符串中包含的每个'\'进行转义。

比如说,我们要写一个关于Windows路径G:\publish\codes\02\2.4这样的字符串,如果在Python程序中直接这样写肯定是不行的,需要使用\转义字符,对字符串中每个'\'进行转义,即写成G:\\publish\\codes\\02\\2.4这种形式才行。

原始字符串以“r”开头,它不会把反斜线当成特殊字符。因此,上面的Windows路径可直接写成如下这种形式:

s1 = r'G:\publish\codes\02\2.4'
print(s1)

Python的字符编码

Python默认采用UTF-8编码, 但它也提供了encode()方法,可以轻松实现将Unicode编码格式的字符串转化为其它编码格式。

bytes类型

Python3 新增了bytes类型,用于代表字节串。字符串(str)由多个字符组成,以字符为单位进行操作;字节串(bytes)由多个字节组成,以字节为单位进行操作。

如果希望将一个字符串转换成bytes对象,有如下三种方式:

  1. 如果字符串内容都是ASCII字符,则可以通过直接在字符串之前添加b来构建字节串值。
  2. 调用bytes()函数(其实是bytes的构造方法)将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。
  3. 调用字符串本身的encode()方法将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。
# 创建一个空的bytes
b1 = bytes()
# 创建一个空的bytes值
b2 = b''
# 通过b前缀指定hello是bytes类型的值
b3 = b'hello'
print(b3)
print(b3[0])
print(b3[2:4])
# 调用bytes方法将字符串转成bytes对象
b4 = bytes('我爱Python编程',encoding='utf-8')
print(b4)
# 利用字符串的encode()方法编码成bytes,默认使用utf-8字符集
b5 = "学习Python很有趣".encode('utf-8')
print(b5)

运行上面程序,可以看到如下输出结果:

b'hello'
104
b'll'
b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b'
b'\xe5\xad\xa6\xe4\xb9\xa0Python\xe5\xbe\x88\xe6\x9c\x89\xe8\xb6\xa3'

bool布尔类型

Python提供了bool类型来表示真(对)或假(错)。

比如常见的5 > 3比较算式,这个是正确的,在程序世界里称之为真(对),Python使用True来代表;

再比如4 > 20比较算式,这个是错误的,在程序世界里称之为假(错),Python使用False来代表。

>>> 5>3
True
>>> 4>20
False

input()函数

input()函数用于向用户生成一条提示,然后获取用户输入的内容。由于input()函数总会将用户输入的内容放入字符串中,因此用户可以输入任何内容,input()函数总是返回一个字符串。

例如如下程序:

msg = input("请输入你的值:")
print (type(msg))
print(msg)

第一次运行该程序,我们输入一个整数,运行过程如下:

请输入你的值:2
<class 'str'>
2

第二次运行该程序,我们输入一个浮点数,运行过程如下:

请输入你的值: 1.2
<class 'str'>
1.2

第三次运行该程序,我们输入一个字符串,运行过程如下:

请输入你的值:Hello
<class 'str'>
Hello

print()函数

前面print()函数时,都只输出了一个变量,但实际上print()函数完全可以同时输出多个变量,而且它具有更多丰富的功能。

user_name = 'Charlie'
user_age = 8
#同时输出多个变量和字符串
print("读者名:",user_name,"年龄:",user_age)

运行上面代码,可以看到如下输出结果:

读者名: Charlie 年龄: 8

从输出结果来看,使用print()函数输出多个变量时,print()函数默认以空格隔开多个变量,如果读者希望改变默认的分隔符,可通过sep参数进行设置。例如输出语句:

#同时输出多个变量和字符串,指定分隔符
print("读者名:",user_name,"年龄:",user_age,sep='|')

运行上面代码,可以看到如下输出结果:

读者名:|Charlie|年龄:|8

在默认情况下,print()函数输出之后总会换行,这是因为print()函数的end参数的默认值是“\n”,这个“\n”就代表了换行。如果希望print()函数输出之后不会换行,则重设end参数即可,例如如下代码:

#设置end 参数,指定输出之后不再换行
print(40,'\t',end="")
print(5O,'\t',end="")
print(60,'\t',end="")

上面三条print()语句会执行三次输出,但由于它们都指定了end="",因此每条print()语句的输出都不会换行,依然位于同一行。运行上面代码,可以看到如下输出结果:

40  50  60

file参数指定print()函数的输出目标,file参数的默认值为sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此print()函数默认输出到屏幕。实际上,完全可以通过改变该参数让print()函数输出到特定文件中,例如如下代码:

f = open("demo.txt","w")
#打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝回日暖玉生烟',file=f)
f.close()

上面程序中,open()函数用于打开demo.txt文件,接连 2 个print函数会将这 2 段字符串依次写入此文件,最后调用close()函数关闭文件。

格式化输出

Python提供了“%”对各种类型的数据进行格式化输出,例如如下代码:

price = 108
print ("the book's price is %s" % price)

user = "Charli"
age = 8
# 格式化字符串有两个占位符,第三部分提供2个变量
print("%s is a %s years old boy" % (user , age))

上面程序中的print函数包含以下三个部分,第一部分是格式化字符串(相当于字符串模板),该格式化字符串中包含一个“%s”占位符,它会被第三部分的变量或表达式的值代替;第二部分固定使用“%”作为分隔符。

格式化字符串中的“%s”被称为转换说明符Conversion Specifier),其作用相当于一个占位符,它会被后面的变量或表达式的值代替。“%s”指定将变量或值使用str()函数转换为字符串。

如果格式化字符串中包含多个“%s”占位符,第三部分也应该对应地提供多个变量,并且使用圆括号将这些变量括起

1、当使用上面的转换说明符时,可指定转换后的最小宽度,例如如下代码:

num = -28
print("num is: %6i" % num)
print("num is: %6d" % num)
print("num is: %6o" % num)
print("num is: %6x" % num)
print("num is: %6X" % num)
print("num is: %6s" % num)

运行上面代码,可以看到如下输出结果:

num is:  -28
num is:  -28
num is:  -34
num is:  -1c
num is:  -1C
num is:  -28

从上面的输出结果可以看出,此时指定了字符串的最小宽度为6,因此程序转换数值时总宽度为6,程序自动在数值前面补充了三个空格。

**2、**在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python也允许在最小宽度之前添加一个标志来改变这种行为,Python支持如下标志:

  • ``:指定左对齐。
  • +:表示数值总要带着符号(正数带“+”,负数带“-”)。
  • 0:表示不补充空格,而是补充0

例如如下代码:

num2 = 30
# 最小宽度为0,左边补0
print("num2 is: %06d" % num2)
# 最小宽度为6,左边补0,总带上符号
print("num2 is: %+06d" % num2)
# 最小宽度为6,右对齐
print("num2 is: %-6d" % num2)

运行上面代码,可以看到如下输出结果:

num2 is: 000030
num2 is: +00030
num2 is: 30

**3、**对于转换浮点数,Python还允许指定小数点后的数字位数:如果转换的是字符串,Python允许指定转换后的字符串的最大字符数。这个标志被称为精度值

my_value = 3.001415926535
# 最小宽度为8,小数点后保留3位
print("my_value is: %8.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0
print("my_value is: %08.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0,始终带符号
print("my_value is: %+08.3f" % my_value)
the_name = "Charlie"
# 只保留3个字符
print("the name is: %.3s" % the_name)
# 输出Cha# 只保留2个字符,最小宽度10
print("the name is: %10.2s" % the_name)

运行上面代码,可以看到如下输出结果:

my_value is:  3.001
my_value is: 0003.001
my_value is: +003.001
the name is: Cha
the name is:     Ch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星*湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值