第十一天

全局变量当局部变量使用

用global声明一下

num = 1
def a():
   global num
   num +=1
   print(num)
   if num <3:
       a()
a()
       

if name == ‘main’

if __name__ == '__main__'
在这个方法下面写的程序只会运行这个py 文件写的方法属性等,
为了防止其他模块(不同的模块就是不同的Py文件,不同的模块通过import py文件名  来引用)有相同的方法等不想调用但被调用

类的强化训练

1.创建一个由有序数值对(x, y) 组成的 Point 类,它代表某个点的 X 坐标和 Y 坐标。X 坐标和 Y 坐标在实例化时被传递给构造器,如果没有给出它们的值,则默认为坐标的原点。

class Point(object):
  def __init__(self,x = 0,y = 0):
    self.x = x
    self.y = y
    print ('(%d,%d)'%(self.x,self.y))
p1 = Point()
p2 = Point(1,2)

2.要求: 可以指定一批生成的个数,可以指定数值的范围,可以调整每批生成数字的个数

from random import randint
class Num:
    def __init__(self,n,start,finish):
        self.n=n             #n=指定一批生成的个数
        self.start=start
        self.finish=finish   #start ,finish=指定数值的范围
    def cal(self):
        list1=[]
        for i in range(self.n):
            a=randint(self.start,self.finish)
            list1.append(a)
        print(list1)
a=Num(4,1,6)
a.cal()
  1. 有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。  即:{‘k1’:大于66的所有值,‘k2’:小于66的所有值}
class  Fenlei:
    def panduan(self):
        dic_ = {'k1': [], 'k2': []}
        for i in list1:
            if i>66:
                 dic_['k1'].append(i)
            elif i<66:
                 dic_['k2'].append(i)
        print(dic_)
list1=[11,22,33,44,55,66,77,88,99,90]
l=Fenlei()
l.panduan()

4.使用while打印出以下的图形

    *
   ***
  *****
 *******
*********   
 *******
  *****
   ***
    *

class  Pailie:
    i=1         #i是行数
    j=5         #j是空格数
    k=-1        #k是*数
    while i<=9:
         i+=1
         j-=1
         if j>=0:
             k += 2
             print(' '*j,'*'*k)
         else:
             k -= 2
             print(' '*abs(j),'*'*(k))
Pailie()
  1. 有如下列表,    nums=[2,7,11,15,1,8,7]    请找到列表中任意两个元素相加能够等于9的元素集合,列[(2,7), (1,8)]
class H:
    def cal(self):
        list1 = []
        for i in nums:
            for j in nums:
                if i+j == 9:
                    list1.append((i, j))
        print(list1)
nums=[2,7,11,15,1,8,7]
h=H()
h.cal()

7.地铁交通价格调整为:6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。使用市政交通一卡通刷卡乘坐轨道交通,每自然月内每张卡支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。  
要求:  
假设每个月,小明都需要上20天班,每次上班需要来回1次,即每天需要乘坐2次同样路线的地铁;每月月初小明第一次刷公交卡时,扣款5元;编写程序,从键盘获取距离,帮小明计算,如果不使用市政交通一卡通的每月总费用,和使用市政交通一卡通的每月总费用

class NotUse:
    def __init__(self,distance):
        self.distance=distance
        self.uprice=0
        self.tprice=0
    def unitprice(self):                #单价
        if self.distance<=6:
           self.uprice=3
        elif self.distance>6 and self.distance<=12:
           self.uprice=4
        elif self.distance>12 and self.distance<=22:
           self.uprice=5
        elif self.distance>22 and self.distance<=32:
           self.uprice=6
        elif self.distance>32:
           if (self.distance-32)%20==0:
               self.uprice=6+(self.distance-32)/20
           elif (self.distance-32)%20!=0:
               self.uprice = 6 + (self.distance - 32) // 20+1  
    def totalprice(self):                             #总价
        self.tprice=5+20*2*self.uprice
        print(self.tprice)
class Use:
    def __init__(self, distance):
        self.distance = distance
        self.uprice = 0
        self.tprice = 0
    def unitprice(self):                #单价
        if self.distance<=6:
           self.uprice=3
        elif self.distance>6 and self.distance<=12:
           self.uprice=4
        elif self.distance>12 and self.distance<=22:
           self.uprice=5
        elif self.distance>22 and self.distance<=32:
           self.uprice=6
        elif self.distance>32:
           if (self.distance-32)%20==0:
               self.uprice=6+(self.distance-32)/20
           elif (self.distance-32)%20!=0:
               self.uprice = 6 + (self.distance - 32) // 20+1           
     def totalprice(self):                    #self.tprice折扣前的总价钱 self.tprice1是折扣后的总价钱
        self.tprice1=0
        self.tprice=2*20*self.uprice
        if self.tprice>=100 and self.tprice<150:
            self.tprice1=100+(self.tprice-100)*0.8
        elif self.tprice>=150 and self.tprice<400:
            self.tprice1 = 100 + (150-100) *0.8 + (self.tprice-150)*0.5
        elif self.tprice >400:
            self.tprice1 = 100+(150-100)*0.8+(self.tprice-400)*0.5+self.tprice-400
        print(self.tprice1+5)
xiaoming1=NotUse(8)
xiaoming2=Use(8)
xiaoming1.unitprice()
xiaoming1.totalprice()
xiaoming2.unitprice()
xiaoming2.totalprice()            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值