Python 学习DAY1|Python 语言基础(基础规范、变量类型与逻辑语句)

本笔记摘录清华大学工业工程系朱成礼老师的python教案与授课内容,并在此基础上进行实操性的拓展,希望能对大家有所帮助。

 step0:浅记一下评分标准 

 一、python 基础语法

 二、Python标准数据类型

数据、字符串和元组不可变、列表、字典和集合可变

1、数值(number)

 1.1数据类型

 1.2运算符

print(a**2)  #乘方
print(a/b)  #除法,得到一个浮点数
print(a//b)  #除法,取结果的整数部分
print(a%b)  #取余数
print(0.2+0.1)  # 0.3000000000000004
# 所以要注意,对于小数的加减,不能判断0.2+0.1==0.3,是得不到正确结果的

2、字符串(string)

\n 换行; \r 回车; \t横向制表; \v纵向制表

2.1字符串的定义和引用

str_1 = 'Python'
str_2 = 'class'

2.2字符串的索引和截取

str_1[2] = t
str_1[3:-1] = ho  # 第一个:表示从哪儿到哪儿
str_1[0:-1:2] = Pto  # 第二个:表示步长

2.3字符串的运算符

str_1 * 2 = PythonPython
str_1 + str_2 =Pythonclass
str_1 in str_2 = False
str_1 not in str_2 = True

str_3 = r"PRO\n"  # 表示字符串中的反斜杠都不转义
str_4 = u"你好"  # 表示转存时候使用unicode编码

2.4字符串对象常用方法

str.strip([chars])  # 删除字符串开头和结尾的空格或指定字符,返回新字符串,原字符串不变
str.strip()  # 删除空格 
str.strip('16')  # 删除16


str.split(s)  # 按指定字符分割字符串,放到一个列表里

3、列表(list)

相比于数组的同一类型,List可以放各种各样的数据类型

序列:每个元素都有索引

3.1创建列表

list_a = list()
list_b = list('Python')  # 由字符串创建列表
list_c = ['Java', [90,89,87], 'C']

 3.2列表索引和截取

与string相同

 注意:截取后生成的是一个新的List,而不改变原来的list

3.3改变列表

3.4改变列表的常用函数

3.5列表推导

列表生成式是利用其他列表创建新列表的一种方法,格式为:

[表达式 for 变量 in 序列]或者[表达式 for 变量 in 序列 if 过滤条件]

list_a = [1,2,3,4,5,6,7,8,9,10]  
list_b = [2*x for x in list_a]  # 对list_a中的每个元素乘2
list_c = [x for x in list_a if x % 2 ==0]  # 提出list_a中的偶数
list_d = [x for x in range(1,12,2)]  # 在[1,12)这个区间内,以步长为2去遍历

4、元组(tuple)

元组不可变,但是元组中如果有列表,此列表可以被改变

元组没有推导式,但是可以把推导式转化为元组

4.1 创建元组

# 通过赋值直接创建元组  tuple_a = (['A', 'B'], 18, 2.5, 2+4j)

构造包含 1 个元素的元组有点儿特殊。如: a = (5, );

4.2元组操作

# 元组正向索引和反向索引
tuple_a = ('Max', 28, 'Boston', ['apple', 'banana', 'cherry'])
print("age:", tuple_a[1])
print('favourite food:', tuple_a[-1])

# 截取元素
tuple_num = (1, 2, 3, 2, 5, 2, 7, 8, 9, 10)
a = tuple_num[1:5:2]
b = tuple_num[::-1]  # 相当于是以-1的步长正向遍历整个元组,也就是倒序
print(a, b, sep='\n')  # 注意到,因为加了\n所以换行了

# 修改元组中的可变元素
tuple_a[3].append('blueberry')
print(tuple_a)

# 元素计数与索引值
print("count2:", tuple_num.count(2))
print("the index of 2:", tuple_num.index(2))

# 元组与列表相互转换
list_num = list(tuple_num)
print("list_num:", list_num)

obj_num = tuple(list_num)
print("type of obj_num:", type(obj_num))

# 元组解包
name, age, city, favourite_fruit = tuple_a
print(name, age, city, favourite_fruit, sep='\n')

5、字典(dictionary)

{key:value}         其中,key必须是唯一不可变的,而value是可以重复的

相对于有序的对象集合(列表),字典是无序的对象集合;字典中的元素是通过键来存取的,而不是通过偏移存取

5.1创建字典

# 直接赋值创建字典:
dict_a = {'name': 'Zhang Tong', 'age': 20, 'city': 'Beijing'} 
# 使用字典构造方法创建字典:
items = [('name', 'Zhang Tong '), ('age', 20), ('city', 'Beijing')]
dict_b = dict(items)
# 通过关键字创建字典:
dict_c = dict(name='Zhang Tong ', age= 20, city='Beijing')

5.2 字典的一些函数与字典操作

# 直接赋值创建字典
dict_univ = {'10001': '北京大学', '10002': '中国人民大学', '10003': '清华大学', '10004': '北京交通大学',
             '10005': '北京工业大学', '10006': '北京航空航天大学'}
bua = dict_univ.pop('10001')  # 删除并返回一个键值对
print('bua:', bua)

print(dict_univ['10003'])
print(dict_univ.get('10002'))
print(dict_univ.values())
print(dict_univ.keys())

# 使用update函数一次添加另一个字典中的元素
dict_tmp = dict([('10007', '北京理工大学'), ('10008', '北京科技大学')])
dict_univ.update(dict_tmp)

# 遍历字典
for key, value in dict_univ.items():
    print(key, ",", value)

6、集合(set)

6.1集合的表示

集合是无序可变序列,使用{}作为界定符,元素之间用逗号分隔,集合中的元素互不相同,其基本功能是进行成员关系测试删除重复元素。

集合中不能有可变元素(如列表、集合与字典),但是集合对象是可变的,可以增加或删除元素。

# 直接赋值创建集合对象
set_a = {'Apple', 'Haw', 'Pear', 'Apple'}  # 由于其具有重复的元素,所以只保留一个Apple

# 通过set函数讲列表等可迭代对象转化为集合
sey_b = set(['Grape', 'Kiwi', 'Blueberry'])

# 创建一个空集合必须用set()而不是{}

6.2集合相关函数

 注意: remove的删除:集合中一定要有这个元素才可以删除,否则会报错;

discard的删除:集合中无论有没有这个元素都可以删除,无影响

6.3集合的运算与成员测试

 

三、记不住怎么办

1、dir([object])列出对象的属性和方法

2、help(加上刚刚查到的方法名词/对象/变量/类型) 给出方法的详细说明

四、python中的数据类型转换与运算符

 注意:eval(str)可以把里面的字符串当成代码来执行,是测试代码用的,十分危险,不建议使用。

成员运算符:in和not in  # 在不在里面

身份运算符:is和is not  # 是不是

五、python中的流程控制语句

5.0 bool表达式

在Python中False,None,0, “” ,(),[],{}作为布尔表达式值时,会被解释器看作假 (False),其他的一切都被解释为真,包括特殊值True

• in 检查对象是否包含在列表中,not in 用于检查是否不包含在列表中。

5.1 if选择语句

 注意:

1、注意条件之后的冒号不能少

2、用缩进区分代码块与逻辑结构

# BMI判定
# 接受用户输入信息:姓名、身高体重
print("欢迎来到BMI测试,请入入你的身份信息")
name = input("请问您的姓名是:")
height = float(input("请问您的身高是多少米?"))
weight = float(input("请问您的体重是多少千克?"))

# 检查身高和体重是否为负值
if height <= 0:
    print("输入有误,请重新输入")
elif weight <= 0:
    print("输入有误,请重新输入")
else:
    BMI = weight / (height**2)
    print("您的BMI值为:", BMI)
    if BMI < 18.5:
        print("您目前偏瘦")
    elif BMI <= 24:
        print("您身体正常")
    elif BMI <= 27:
        print("您目前超重")
    elif BMI <= 30:
        print("您轻度肥胖")
    elif BMI <= 35:
        print("您中度肥胖")
    else:
        print("您重度肥胖")

5.2 while循环语句、for循环、break和continue语句

核心:1、掌握基本结构 2、理清事物逻辑关系

示例一:九九乘法表的制作(错误示例分析)

1、正确代码

i = 1
while i <= 9:
    j = 1
    while(j <= i):
        print(i,'*', j, '=', i*j, end='\t')  # f'{i}*{j}={i*j}' 也可以
        j += 1
    print('')
    i += 1

2、错误代码

i = 1
j = 1
while i <= 9:
    while(j <= i):
        print(i,'*', j, '=', i*j, end='\t')  # f'{i}*{j}={i*j}' 也可以
        j += 1
    print('')
    i += 1

 错误结果如左图所示

 只是j=1的位置发生了改变,为什么第一个就能输出完整的乘法表,而第二个却只输出了上图所示的东西呢?让我们来按照2的代码走一遍。

我们会发现,当我们把j=1放在外面的时候,内层while循环进行一次之后,当他想第二次进行时,开始的j的值是2,所以就没有j=1的那个式子了,以此类推,我们只能得到i=j时的式子

此题还需要注意两点:

1、print(' ')的作用:当我撤掉这句话时,我发现输出结果是没有换行的,这说明print()或print('')具有\n的换行作用

2、end=' '的作用:

end=' '意思是末尾不换行,加空格

end='\n'意思是末尾换行

end='\t'意思是要 让这个表格对齐

示例二:输出0到200之间的所有素数,并求出这些素数的和(详解)

step1: 遍历区间需要用到for循环

step2:认识到素数的特质:一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除的数叫素数;用数学表达式表达素数,考虑取余

step3:开始进行嵌套
最外层定义一个for循环,确定x的范围区间0~200
下面再嵌套一层for循环,确定y的区间,因为是除了1和其本身以外的数,所以y应该从2开始,结束区间由被除数为上限
写一个if判断语句,利用取余公式【x%y】来确定其余数是否为0:若为0,就说明y被x整除,则退出循环

为了防止输出的x过多,我们选择引入一个新的变量i,用于记录x是否为质数这件事

# 输出0到200之间的所有素数(只能被1和它本身整除的数),并求这些素数之和
sum = 0
for x in range(2, 201):  # 遍历除数
    i = 0
    for y in range(1, x):  # 遍历被除数
        if x % y == 0:
            i += 1
    if i == 1:  # 由于x一定会被1整除,所以当y循环一遍之后i=1时,说明在其余的数字中没有可以被整除的了
        print(x)
        sum += x
print(sum)

第一天的授课内容就到此结束啦!我会每天更新的~
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值