python基础课程2(看代码看注释)--条件判断|循环|函数|生成器|类

##人生苦短,我用python
##课程内容
#条件判断
#循环
#类:简单介绍类的用法


##条件判断
#if condiction:
 #   dosomething
#else:
#    dosomething
total_cost = 32.5
if total_cost>30:
    discount = 0.9
elif total_cost>20:
    diacount = 0.95
else :
    discount = 1
total_cost = discount
print('小姐姐买水果的花费为:{}元'.format(total_cost))
#布尔型变量做运算
a = True
b = False
print('a is {},b is {}'.format(a,b) )
print('a and b is {}'.format(a and b) )
print('a or b is {}'.format(a or b) )
print('not a is {}'.format(not a) )
##条件判断的近亲-断言:我断言它肯定是这样的,如果不是我就崩溃
age=19
assert age==18,'她竟然不是18岁'#如果age是18则是18,如果不是就输出“她竟然不是18岁”。为了程序员捕捉或者调试错误出现的


##循环for循环(遍历循环),while循环(条件循环)
#for循环:遍历循环
costs = [2,3,5,7,9,4]
for cost in costs:
    print('消费{}元'.format(str(cost).center(10))#str()转换成字符串形式,center()为了格式好看
#生成一个长度为20的一个随机列表
# 生成随机数需要使用random模块
import random
# 生成一个1-10之间的随机数
random.randint(1,10)
random_numbers = []
while len(random_numbers)<20:
    random_numbers.append(random_numbers.randint(1,10))
print(random_numbers,len(random_numbers))

random_numbers = []
for i in range(20):
    random_numbers.append(random.randint(1,10))
print(random_numbers,len(random_numbers))
##编程建议:就是只要能使用for循环就不要使用while循环
##当循环条件跟数量没有关系时只能使用while循环
#题目:往空列表添加随机数,直到添加的数为9时结束,只能用while
random_numbers = []
while 9 not in random_numbers:
    random_numbers.append(random.randint(1,10))
print(random_numbers,len(random_numbers))
##问题:a = [1,2,3]是个列表,判断b = 1,c = (b in a),判断c是什么类型,是不是一个元组呢?不是元组,是一个布尔型变量。元组永远是true
import time
number = 0
while True:
    time.sleep(1)
    number+=1
    print('hello world,{}'.format(number),end = '\r')
a = []
b = ()
type(a),type(b)
random_numbers=[6,3,7,5,9]
#跳出本次循环
for number in random_numbers:
    if number % 2 ==0:
        print('{} is 偶数'.format(number))
    else:
        continue
#跳出全部循环
for number in random_numbers:
    if number % 2 == 0:
        print('{} is 偶数'.format(number))
    else:
        break
    print("没有跳过")
else:
    print('全是偶数')
##for 可以构建推导式:可以从一个数据系列构建另一个数据系列
random_numbers = list(range(10))
random_numbers

new_numbers = []
for number in random_numbers:
    new_numbers .append(number=10)
#g构建推导式:
new_numbers = [number*10 for number in random_numbers]##拼凑出新的列表,叫做列表推导式,即我们是在列表里使用for进行的推导式,也可以拥有字典推导式
##字典推导式
print(dict_numbers = {number :'A' for number in random_numbers})
tuple_number = (number*10 for number in random_numbers)##tuple此时是一个生成器,是一个可迭代的序列
##生成器:在网上下电影想下高清的但是内存不够,但是还是可以看到大于内存的,说明电影不是一下子就下载到内存上的,是一边播放一边下载的。
tuple(tuple_number)

###函数:抽象概念 函数名 括号传递参数 return返回值  位置参数是不可以交换位置的
variable_item = {'a':100,'b':200,'c':300,'d':400,'e':500}
[key for key,value in variable_item.items() if value ==100]##繁琐
#定义函数
def get_keys(dict_variable,value):
    return [k for k,v in dict_variable.items() if v ==value]
get_keys(variable_item,100) #调用的时候传递的参数才是实参
#函数是封装好的,可以重复使用的,能够完成特定功能的代码块,它是代码的抽象
def pow1(x,a):
    y = x**a
    print('y is {}'.format(y))
y1 = pow1(2,3)

#不建议对可变类型在函数内进行更改,建议用函数返回值进行重新赋值
def test(variable):
    temp = variable.copy()
    temp.append(100)
    return temp

var = []
var = test(var)

#参数收集:就是在用的时候还不知道要不要用其他的参数,就先进行一下空间的开辟## **就是收集key=value这种形式的参数
def test2(name,age,*args,**kwargs):
    print(name,age,*args,**kwargs)
test('wrong',12,23,'[k]',[12,23])
dict_variable={
    'weight':100,
    'height':200
}
test('wrong',12,**dict_variable)#收集位置参数,收集关键字参数?

##装饰器:
a = 10
b = [11,12]

def test():
    print('test')
c = test
#可以把函数赋值给一个变量,函数返回函数,函数可以当做函数的·返回值进行返回
def test1(func):
    return func
f = test1(func)
f.__name__
f()
#返回一个从0-1的浮点数
import random
def test():
    return round(random.random(),1)
#函数返回的浮点数保留3个有效数字
##python另一个语法糖。装饰器
@decorator
import random
def test():
    return random.random(),1
@decorator
def decorator(func):
    def wrapper(*args,**kwargs):
        #do something
        return round(func(*args,**kwargs),3)
    return wrapper()
f = decorator(test)
test.__name__

###类
class Person:
    def __init__(self,name,age):
#初始化函数中,self后边是实例化对象的属性,加下划线的意思是这个属性是私有的,不应该访问
        self._name = name#表示我该属性是隐私的
        self._age = age

    def get_name(self):
        return self._name

s = 'hello world'
a.center(12)
p = Person('wang',12)
p.get_name()
#继承
class Student(person):
    pass #什么都不做,占个位而已
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值