02>>>变量和基本数据类型

02.变量和基本数据类型

 

python语法注释

  在进入正题之前,首先需要了解一下注释。

  注释就是对一段代码的解释说明(不参与实际程序执行,写出来就是给人看的,起提示说明作用)

# 下面是打印0到9的python代码
for i in range(10):
       print(i)

02>>>变量和基本数据类型

书写规范

  如果是单行注释并且写在代码的上方 那么注释内容与井号之间空一格。   如果是单行注释并且写在代码的后方 那么井号与代码之间空两格 内容与井号之间空一格。

快捷方式

  code选项中的Reformat code(热键Ctrl+Alt+L)可以自动将写好的代码准换成标准语法结构。

02>>>变量和基本数据类型

1.单行注释

  使用井号即可。

# 注释内容

2.多行注释

  使用三引号,但双引号皆可,但必须是英文格式的。

'''注释内容'''

"""注释内容"""

  小技巧:pycharm中如何快速注释/解开注释代码?

ctrl + ?

  对于我们初学者来说,写代码的时候一定要养成写注释的习惯。

 

变量

  变量即变化的量,用来记录事物的变化(也可以不变)状态。

  比如:人的年龄、薪资、体重等。

02>>>变量和基本数据类型

  举个栗子:

name = 'jason'
age = 18
addr = '芜湖'

  这三条代码便是三个变量。

变量的语法结构

变量名 赋值符号 变量的值(真正的数据)

  需要强调的是:变量推荐使用英文,不建议使用汉语拼音,更不推荐使用中文。

变量的内部本质

  以name='jason'为例。

1.先看赋值符号的右侧

  在内存空间中申请一块内存空间将jason存储进来

2.给这块空间绑定一个变量名

  该变量名就是访问该空间的详细坐标,要想访问内存中的数据必须通过变量名。

02>>>变量和基本数据类型

  如果一个在内存中的数据没有一个变量名与之绑定,这个数据就被称之为垃圾数据。

小练习

练习1

name = 'jason'
name = 'kevin'
print(name)
#打印出来会是哪个名字?

  在最开始,内存空间中有一段数据jason,绑定一个变量名name。

  接着,内存空间中又有一段数据Kevin,也使用name作为它的变量名。

  于是name断开与jason的链接,转而链接kevin;而此时的jason就变成了垃圾数据。

  所以最后打印出来的结果是kevin。

02>>>变量和基本数据类型

  一个变量名只能绑定一个变量值,就像一个车牌号只能给一辆车用一样。

练习2

x = 1
x = x + 1
print(x)
# 能否打印出x?会是1还是2还是x+1?

  首先在内存空间中申请一块空间来存储变量值1,然后绑定一个变量名x与之绑定。

  接着内存空间中的1+1变成了2,于是变量名断开与1的链接指向2。

02>>>变量和基本数据类型

练习3

name = 'jason'
name1 = name
name2 = name
print(name1)
print(name2)
name1,name2分别会打印出什么?

  首先在内存空间中申请一块空间来存储变量值jason,随后绑定变量名name。

  name1=name这一行代码。先看右边name,是一个变量名,指向的是变量值jason,所以name1也指向jason,name2也同理。

在python中,多个变量名可以绑定同一个值

02>>>变量和基本数据类型

变量名的命名规范

  1.变量名只能由数字、字母、下划线组成

  2.数字不能开头,下划线尽量也不要开头(有特殊含义)

  3.变量名一定要做到"见名知意"

  4.变量名不能与关键字(自带功能)冲突

小练习:请判断以下变量是否能打印

8name = 'jason'
_url = 'https://www.baidu.com'
user_name_666 = 'heiheihei'
name@ = 'haha'

8name = 'jason'不能

_url = 'https://www.baidu.com'可以

user_name_666 = 'heiheihei'可以

name@ = 'haha'不能

02>>>变量和基本数据类型

02>>>变量和基本数据类型

02>>>变量和基本数据类型

02>>>变量和基本数据类型

变量名的命名风格

1.下划线式  # python推荐使用下划线式
user_name_from_db = 'jason'
2.驼峰体  # JavaScript推荐使用驼峰体
大驼峰  # 所有单词首字母大写
  UserNameFromDb = 'jason'
   小驼峰  # 首字母不大写其他都大写
  userNameFromDb = 'jason'
"""无论使用哪种风格都没有关系 但是尽量不要混着用"""

常量

  常量即不变的量。

  例如:圆周率。

  需要注意的是:在python中没有真正意义上的常量,只是我们"墨守成规"的将全大写的变量名看成是常量。

HOST = '127.0.0.1'
PORT = 3306
……

不过在其他编程语言中是存在真正意义上的常量的,定义了之后就无法修改。

"""JavaScript中"""
const pi = 3.14
pi = 666  # 报错

 

数据类型

  事物的状态千变万化,对应的变量的值也应该有很多种类型。

# 如何查看数据的数据类型
type()

02>>>变量和基本数据类型

1.整型int

  整型数据就相当于生活中的整数,填写班级人数、年龄、年份时会用到。

  定义整型时,直接写整数即可。

eg:
stu_num = 15
age = 18
year = 2021

2.浮点型float

  浮点型数据相当于生活中的小数,在填写身高、体重、薪资时会用到。

  定义浮点型时,直接写小数即可

eg:
height = 1.83
weight = 75.5
salary = 3.1

3.字符串str

  字符串相当于一段文字描述,主要用于描述性性质的内容。

name = 'jason'
name1 = "jason"
name2 = """jason"""
name3 = '''jason'''
# 如果在三引号的左边有变量名和赋值符号,那么就是字符串,否则就是注释。

  字符串也支持加法和乘法:

name + name1
name * 5

02>>>变量和基本数据类型

4.列表list

  列表用中括号括起来,内部可以存放多个元素,元素与元素之间逗号隔开,元素可以是任意数据类型。

stu_list = ['jason', 'kevin', 'tony']

  列表可以进行索引取值:

print(stu_list[1])  # kevin

02>>>变量和基本数据类型

  可以看见索取到了kevin而不是jason,因为在IT领域,索引一般都是从0开始而非日常生活中的从1开始。

小练习

l1 = [11,22,33,[44,55,['jason','kevin','tony']]]
需求:通过索引取值获取到kevin

思路:

1.先明确l1大列表有几个元素?

  4个元素。

2.再明确你要的数据在哪个元素里面?

  最后一个。

  那么将思路转化成实际的代码:

l2 = l1[3]  # 将列表l1中第四个元素赋值给列表l2
l3 = l2[2]  # 将列表l2中第三个元素赋值给列表l3
print(l3[1]) # 打印列表l3中的第二个元素

  这样写需要分两行代码,太复杂了,我们可以简化为一行:

print(l1[3][2][1])  # 打印列表l1中的第四个元素中的第三个元素中的第二个元素

 

5.字典dict

  字典用大括号括起来,内部可以存放多个元素,并且元素的组织形式是K:V键值对,键值对与键值对之间逗号隔开。

  K(Key键)一般是对V(Value值)的描述性性质的数据,大部分情况下是字符串,V类似于变量,它的值可以是任意数据类型。

user_dict = {
  'name': 'jason',
            'age': 18,
            'hobby': 'read'
            }
print(user_dict['name'])

 

小练习

user_dict = {
'name': 'jason',
'age': 18,
'hobby': 'read',
'addr': {'country': 'China', 'city': ['芜湖', '合肥']}
}

  现在需要获取数据芜湖,应该怎么做?

思路:

1.先获取芜湖所在的字典

d1 = user_dict['addr']
print(d1)  # 'country': 'China', 'city': ['芜湖', '合肥']}

02>>>变量和基本数据类型

2.获取芜湖所在的列表

l2 = d1['city']
print(l2)  # ['芜湖', '合肥']

02>>>变量和基本数据类型

3.获取列表中芜湖

print(l2[0])

02>>>变量和基本数据类型

  出于简化代码的考量,这些步骤也可以做简化:

print(user_dict['addr']['city'][0])

02>>>变量和基本数据类型

6.布尔值bool

  布尔值只有两种状态:

True
False

  布尔值可以用来表示对错、是否可行等逻辑判断。

  一般情况下存储布尔值的变量名习惯使用is开头。

is_right = True
is_delete = False

02>>>变量和基本数据类型

7.元组tuple

  元组是使用小括号括起来的,内部可以存放多个元素,元素与元素之间逗号隔开,元组内的元素可以是任意数据类型。

  元组内元素不支持修改而列表可以(小外号:不可变的列表)

t = ('joe', 1, 2)
t[0] = 'simon'
print(t)

02>>>变量和基本数据类型

小练习

t1 = (11, 22, [33, 44])
t1[2][0] = 666
print(t1)
最终会得到什么结果?
A 报错
B (11, 22, [666, 44])
C 未知

02>>>变量和基本数据类型

  思路:元组是不可修改的,但是列表是可以修改的。所以即便是元组内的列表,也是可以进行修改的,因为这样的操作并不是在修改元组。所以正确答案是B。

8.集合set

  集合使用大括号括起来,里面可以存档多个元素,元素与元素之间逗号隔开,元素不是K:V的形式 并且集合内元素不可以是任意类型,大部分情况下只能是数字和字符串(不可变类型)

s = {1, 2, 3, 4, 5, 6, 7, 8}

  利用集合,我们可以做出种种功能:

# 去重
去掉重复的元素
# 关系运算
# 交叉并集
共同好友、共同关注

 

与用户交互

  当程序编写完成之后,接下来就该考虑应该怎样呈现在使用者眼前。或者当需要收集用户的数据时,应该有地方接收。

1.输入

input()  # 获取用户输入

  那么我们来尝试一下获取用户输入的名字。

username = input('请输入用户名>>>:')
print(type(username))

02>>>变量和基本数据类型

  可以看到:通过input获取到的用户输入都会存为字符串类型。

2.输出

  其实输出方式在上面就已经出现了。

print()

  print不光可以打印一个值,也可以一次性打印多个值。

print(123)
print(111,222,333,444)

02>>>变量和基本数据类型

3.格式化输出

  每个月初,我们都会收到各种各样的账单,如果放在一起看,不难看出他们的格式都是固定的,只有少数几处涉及到数字人名的地方有所不同。就像是学校发的奖状毕业证,版面都是相似的,该填写不同内容的地方都划线留出空,就等着校长用钢笔填写了。

info = "亲爱的%s你好!你%s月的话费是%s,余额是%s"

  上面一行代码中的%s就是占位符,提前占据好位置,之后只需要填充相应的的数据就可以做到格式化输出了。

print(info % ('jason', 8, 100, -100))
print(info % ('tony', 8, 200, -200))
print(info % ('kevin', 8, 500, 8800))
# 文本里面有几个%s后面就需要给几个真实的数据

02>>>变量和基本数据类型

小练习
# username = input('username>>>:')
   # age = input('age>>>:')
   # print('my name is %s and my age is %s' % (username, age))

小练习

res = """
------------ info of %s -----------
Name : %s
Age   : %s
gender   : %s
Job   : %s
------------- end -----------------
"""
username = input("请输入您的用户名>>>:")
age = input('请输入您的年龄>>>:')
gender = input('请输入您的性别>>>:')
job = input('请输入您的工作岗位>>>:')
print(res % (username, username, age, gender, job))

02>>>变量和基本数据类型

  除了%s,占位符还有不少,比如%d。与%s不同的是,%d只能给数字占位

res = 'my name is %s my age is %d'
print(res%('jason',18))

02>>>变量和基本数据类型

  使用%d就可以生成具有固定位数的号码,可以用来创建各种各样的订单账单。

print('%08d' % 123)  # 生成8位数序号,没有数字的位数用0填充
print('%08d' % 123133)
print('%08d' % 666)
print('%08d' % 2346456546456757)  # 生成8位数序号,没有数字的位数用0填充,如果超过8位数则保持原来的数值

02>>>变量和基本数据类型

 

上一篇:基础数据类型


下一篇:PAT A1124 Raffle for Weibo Followers (20 分)