记录一下自己学python的练习

现在自己学python 先练题 讲自己遇到的问题记录一下

# #BMI=体重/(身高**2)
# userh=float(input('请输入你的身高(cm):'))
# userw=float(input('请输入你的体重(kg)'))
# userbim=userw/userh**2
# print("您的BIM值为:"+str(userbim))
#
# if userbim<=18.5:
#      print("偏瘦")
# elif 18.5<userbim<=25:
#     print('正常')
# elif 25<userbim<=30:
#     print('偏胖')
# else:
#     print('肥胖')

# ______________________________________________________________________________________
# and or  not 分别是与 或 非   优先级分别为 not and  or

# ——————————————————————————————————————————————————————————————————————————————
#list是一个列表 操作要点 :1.可以存很多不同变量的数 2.给它增加删除分别是 .append .remove
#3.列表是可变的以不变的字符串为例子 如果给字符出都大写可以用 .upper的方法 但需要重新赋值一下 列表是可变的 就口语直接改
#方法和函数是不同的,方法一般是在操作对象后面加点 入list.append  对象.方法名(...) 函数是  函数名(操作对象)
# shop_list=["键盘","鼠标"]
# shop_list.append('平板')
# print(shop_list)
# shop_list.remove('键盘')
# print(shop_list)
# shop_list.append(True)
# shop_list.append(66.6)
# shop_list.append(None) #!!!!注意这里不同的python的列表里能存放不同类型的数
# print(shop_list)
# #列表和字符串一样都可以用len函数求出长度:::
# worinima="woaini"
# l1=len(shop_list)
# l2=len(worinima)
# print(l1,l2)
#列表和数组一样是从0开始的  也有很多函数

# num_list=[1,13.-7,2,96]
# print(max(num_list))#输出列表中的最大数
# print(min(num_list))
# print(sorted(num_list))##!!!!!排序
# num_list[1]='我日'#替换掉第一个数
# print(num_list[1]) #打印第一个数

#------------------------------------------------------------------------
#数据结构字典:键  : 值(key:value)
#contacts={"小明":“2000”,
#          “小花”:“2001”   }   要获取某个值的话 contrast["小明"]
#如果有三个小明 就要区分 这里想到了用列表 但列表是可变的 所以用元组 tuple!!!! 如type=('键帽',‘显示器’)
#因为元组是不可变的所以对于列表的插入删除操作元组都做不了 但能分开表示不同的小明
#!!!contacts={”type("小明",1)“:“2000”,”type("小明",2)“:“2111”,”type("小明",3)“:“2000”
#          “小花”:“2001”   }
#字典增加操作:contrast[”美女a“]=”10086“,如果已经存在美女a就会把以前的值覆盖掉
#判断该键是否存在: ”小明“ in contracts 就会返回一个布尔值
#删除该建:     del contracts["小明"]  这样就会删除了这个建
#.keys()返回所有建 .values() 返回所有值     .items()返回所有键值对
#  判断有多少建   len(contracts) 和上面的求列表和字符串长的的方法相同  在for循环时建和值被赋值为元组

#练习:结合input 、字典、if判断、做一个查询流行语含义的电子词典程序

# zidian={"觉醒年代":"是一个很牛逼的电视剧",
#         "yyds":"永远的神的拼音缩写"}
# zidian["双减"]="减轻学生压力"
# print(zidian)
# cha=input("请输入您要查询的词典语句")
# if cha in zidian:
#     print("您查询的词语:"+cha +"含义如下"+zidian[cha])
# else:
#     print("不存在该词")
#     print("当前字典收录词条为:"+str(len(zidian))+"条")#




#!!!!!!!! 用for循环进行迭代处理  比如:列表  字典 字符串1
# for 变量名 in 可迭代对象
#      每一个变量要做的事
#range的介绍   range(5,10,2)表示从5 增加到10 每次跨度为2 10不在范围里 且跨度为1时可省略
#!!!给一点列表 检查每个体温数字 大于38就处理
# tiwen=[36.4,35.2,39,34]
# for tmp in tiwen:    #这里的过程是tmp依次赋值为列表里的数 然后被依次处理
#     if tmp>38:
#
#         print(str(tmp)+"感冒了")

#!!!!!!!!下面是对字典的处理  注意 for循环时候 字典的建和值被当作 元组存储 tuple
#
# tmpdict={"111":36.5,"112":39.5,"113":30}
# for gh,tmpe in tmpdict.items():#这里字典.items表示返回所有键对
#     if tmpe>38:
#         print(gh)
# #计算从1-100的和  利用range
# total=0
# for i in range(1,101,1):
#     total=i+total
# print(total)


##现在介绍while循环  whille 条件A:  条件为真就一直执行
#                        行动B
#练习打印下面的列表
# list1=["你","好","吗","哥"]
# #第一种用for循环
# for i in list1:
#     print(i)
# #第二种 从个数开始
# for i  in range(0,len(list1)):
#     print(list1[i]+"\n")
#
# #第三种 用while循环
# i=0
# while i<(len(list1)):
#     print(list1[i])
#     i=i+1

#例题:用户可以输入任何数字 然后以q结尾 这时就要记录平均值输出
# print("请输入你要输入的数字\n")
# #我想着的用一个列表记录所输入的数字
# list2=[]  #!!!!注意这个空列表的建立
# while True:   #!!!!注意这个循环的思路  我当时没想到
#     f=input("请输入")
#     if f=='q':
#         break
#     else:
#         list2.append(f)
#
# #得到输入的数之后 就要求平均值  设置一个for循环求总数 然后除以长度
# i=0
# sum=0
# for i in range(len(list2)):##!!!!!!!注意迭代这里出现了问题 忘记使用range了
#     sum=sum+int(list2[i])
# sum=sum/len(list2)
# print("平均值为:"+str(sum))#!!!注意字符串和浮点型不能同时使用

#把自己的思路修改一下:
# print("下面是一个求用户输入平均值的算法 输入q时结束")
# user=input("请输入第一个要输入的数")
# count=0
# sum=0
# while user!='q':
#     count=count+1
#     sum=sum+float(user)
#     user=input("请输入要输入的数")
#
# average=sum/count
# print("您所输入的数的平均值为:"+str(average))

#!!!!!!!!!!!!!!!!!优雅的发送短信  “”“几级{0}几级{1}""".format(年,月) 里的0 1就表示用format(年,月)的哪一个数字


#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#函数:   def 函数的名字(传入的参数):  调用是直接将参数调用到里面
#下面时计算扇形面积的函数

# def shanxinmianji(jiaodu,banjin):
#     mianji=jiaodu/360*3.14*banjin**2
#     print("此扇形的面积是:"+str(mianji))
#
# shanxinmianji(40,50)

#练习 设计一函数 计算bim
# def calculate_BIM(high,weight):
#     BIM=weight/(high**2)
#     print(f"您的BIM为:{BIM}")
#
#     if BIM<=18.5:
#         fenlei="偏瘦"
#     elif 18.5<BIM<=25:
#         fenlei="正常"
#     elif 25<BIM<=30:
#         fenlei="偏胖"
#     else:
#         fenlei="肥胖"
#     print(f"您的分类为:{fenlei}")
#     return BIM
#
# high=float(input("请输入你的身高"))
# weight=float(input("请输入你的体重"))
# BIM=calculate_BIM(high,weight)

#s下面来学习类class
#class 类名字(一般情况是第一个首字母大写):
#       def _init_(self,颜色,位置,卧室数 后面添加各种你要加入的属性)
#        self.颜色
#        self.位置
#        self.卧室数

#定义一个类的代码
# class CuteCat:
#     def __init__(self,name="yaunyaun"):##括号里可以表示任意数量的参数 第一个参数是被占用的 用来表示对象本身
#             self.name=name
# cat1=CuteCat()
# print(cat1.name)

# class CuteCat:  #通过class可以创建一个类
#     def __init__ (self,cat_name,cat_age,cat_color):#通过init函数来表示类有哪些属性
#         self.name=cat_name
#         self.age=cat_age
#         self.color=cat_color
# ##接下来定义对象拥有的方法
#     def speak(self):   ##用self帮助我们在方法里去获取和修改对象绑定的属性
#         print("喵"*self.age) #年龄几岁喵几次 实现了根据属性的不同 实现方法调用结果
#     def think(self,content):
#         print(f"小猫{self.name}思考{content}")
# cat1=CuteCat("yuanyaun",3,"橙黄色")
# print(f"小猫{cat1.name}今年{cat1.age}岁,花色是{cat1.color}")
# cat1.speak()
# cat1.think("柴家")



#下面是一个练习
#定义一个学生类
#要求:1 属性包含姓名 学号 以及语数英三颗的成绩
#2.能设置学生某科的成绩
#3 能打印出该学生所有科目的成绩
#对于这个练习的总结:1.要记得对字典的操作  这里吧语数英都存入了一个字典里 2 要注意变量和self定义的时候
#3.其实感觉和结构体差不多 对象的定义就是申明了一个结构体  而功能就是给这些建立的结构体增加了不同的操作
# class Xueshen:
#     def __init__(self,xue_name,xue_number,gardes={"语文":0,"数学":0,"英语":0}):
#         self.name=xue_name     #为什么要进行这一步 就是为了表明这个变量是绑定到对象上的属性
#         self.number=xue_number
#         self.gardes=gardes  #h或者上面变量没有 来一个 self.grades={"语文":0,"数学":0,"英语":0}  这样的效果是一样的
#
#     def set_grade(self,course,grade):
#         if course in self.gardes:  #如果course是字典里的键 就进行修改
#             self.gardes[course]=grade
#         else:
#             return
#
#     def daying(self):
#         print(f"该学生的语数英成绩分别是:{self.gardes}")
#     def print_grades(self):    #!!!!!!!!!!!!!!!!!!!!注意这个函数的操作  如果将字典里的数用for循环打印出来
#         print(f"学生{self.name} 学号:{self.number}的成绩为")
#         for course in self.gardes:
#             print(f"{course}的分数为:{self.gardes[course]}分")
# xiaoming=Xueshen("小明",10086,)
# xiaoming.daying()
# xiaoming.set_grade("英语",60)
# xiaoming.set_grade("语文",70)
# xiaoming.set_grade("数学",30)
# xiaoming.daying()
# xiaoming.print_grades()




#____________________________________________________________________________
#下面介绍类继承  就是猫和人都可以定义再一个父内里有(名字,性别) 两个方法:呼吸和拉屎
#再定义子类后 对于父类(名字,性别)的继承就用:super().__init__(名字,性别)
#对于方法 可以在子类下面定义方法  运行时先在子类中找对应方法 没有的话在父内里找对应方法
# class Dongwu:
#     def __init__(self,name,sex):
#         self.name=name
#         self.sex=sex
#     def breath(self):
#         print(self.name+"在呼吸")
#     def poop(self):
#         print(self.name + "在拉屎")
#     #下面是两个子类
# class Human(Dongwu):
#     def __init__(self,name,sex):
#         super().__init__(name,sex)
#         self.hastail=False
#     def read(self):
#         print(self.name + "在阅读")
# class  Cat(Dongwu):
#     def __init__(self, name, sex):
#         super().__init__(name, sex)
#         self.hastail = True
#     def zhuashafa(self):
#         print(self.name + "抓沙发")
#
#
#
# xiaoming=Human("小明","男")
# xiaoming.read()
# xiaoming.poop()
# xiaoming.breath()


#;例字:类继承练习:人力系统
#员工分为两类:全职 员工Fulltimeemployee  兼职员工 Parttimeemployee
#全职和兼职都有 姓名 name 工号 id 两个属性
#全具备打印信息的方法print_info(打印姓名、工号)方法
#全职具有月薪 monthly_salary属性
#兼职具有 日新 daily_salary属性 每月工作天数work_adys属性
#全职和兼职都具有计算月薪 calculate_monthly_pay的方法,但具体计算过程不一样
#
# class Employee:
#     def __init__(self,name,id):
#         self.name=name
#         self.id=id
#     def print_info(self):
#         print(self.name + '  ' + self.id)
#
# #全职字类
# class Fulltimeemployee(Employee):
#     def __init__(self,name,id,monthly_salary):
#         super().__init__(name,id)
#         self.monthly_salary=monthly_salary
#     def calculate_monthly_pay(self):
#         print(f"全职员工月薪是:{self.monthly_salary}")


# #兼职员工
# class Parttimeemployee(Employee):
#     def __init__(self,name,id,daily_salary,work_adys):
#         super().__init__(name,id)
#         self.daily_salary=daily_salary
#         self.work_adys=work_adys
#
#     def calculate_monthly_pay(self):
#         money=self.daily_salary*self.work_adys
#         print(f"这个兼职员工的工资是:{money}")
#
# xiaoming=Employee("小明","100")
# xiaoming.print_info()
#
# erhao=Fulltimeemployee("小荤","101",5000)
# erhao.print_info()
# erhao.calculate_monthly_pay()
#
# sanhao=Parttimeemployee("小白","102",5,200)
# sanhao.print_info()
# sanhao.calculate_monthly_pay()


#python对文件的操作 open("文件的路径","模式(r读取模式,w写入模式)",encoding="utf-8"这里说的是编码方式)

# f=open("F:\Desktop\新建 文本文档.txt","r",encoding="utf-8")
# # print(f.read())# 程序会记录读到哪个地方了 并记录
# # print(f.read())  #会读空字符串,并打印   !!!在文件特别大的别调用read容易占过多的内存
# print(f.read(10)) #这里会读1-10节的内容
# print(f.read(10)) #这里会读11-20字节的内容
# print(f.readline())#只会读一行的内容,并打印
# #下面是每次读一行  为空就不读了
# line =f.readline()#读第一行
# while line!="":
#     print(line)
#     line = f.readline()  # 读下一行
# print(f.readlines())#这里是会读取全部内容  并且把每行作为列表元素返回
# f.close()#关闭文件释放资源

#
# f=open("./data.txt","r",encoding="utf-8")#这里用的是相对路径
# conent=f.read()
# print(conent)
# f.close()
#
# #或者
#
# with open("./data.txt","r",encoding="utf-8") as f:    #这里用的是相对路径
#     conent=f.read()
#     print(conent)


#下面介绍写操作
# with open("./data.txt","a",encoding="utf-8") as f: #这里只支持写 如果要读的话可以用r+
#     f.write("hellow")
#     f.write("yopood")          #注意这里  write和read不一样  不会换行
#

# with open("./data.txt","r+",encoding="utf-8") as f:
#     print(f.read())
#     f.write("hellow!")


##下面介绍程序异常处理
#捕捉异常  就是用try 和except 捕捉异常  如果发生了预估的异常就在后面输出
#或者在最后加一个except  这个语句会捕捉所有的错误类型
# try:
#     user=float(input("请输入你的体重"))
#     userl=float(input("请输入你的升高"))
#     userbim=user/userl**2
# except ValueError:
#     print("输入的数为不合理数字,请重新运行程序,并输入正确的数字")
#
# except:
#     print("发生了未知错误 请重新运行程序")
# else:
#     print("您的bim值为"+str(userbim))     #不发生错误时才会运行
# finally:
#     print("程序结束运行")                 #不管是否发生错误  都会运行

#assert语句  后面可以跟各种表达式 也就是值为true 和 false表达式  如果求值为true继续运行 如果是false
#就会发生  assertionerror 这个错误    这时候后面的就不运行了  不知道剩下的代码

#unittest 函数库满足了一直测试的功能 就在开一个测试的项目
#比如有个加法函数 测试用例 把这个函数引入
#实现代码:
#def myadder(x,y):
#    return x+y
#!!!!!这个下面就是测试的  如果他们处于同一文件当中  就用form
# import unittest
# from 文件名 import 要测试的函数名字
# class Test(unittest.TestCase):   #test是testcase的子类 在这个类下面可以定义不同的测试用例
#     def test_.......(self):  #这里的测试用例函数必须以test下划线开头
#
# !!!!!!!!!!!!!!!!!!!!!!!写完之后在终端运行 python-m unittest 这样就会自动搜索
# 继承了TastCase的子类的  运行他们所有以test_开头的方法  然后展示测试结果


#unittest.TestCase常见的测试方法
#  assertEqual(a,b)判断两个是否相同
# assertTrue(a)类似于   assert a is  true
# assertln(a,b)      assert a in b
# #下面是例子 初始化购物清单  shoppling_list 是字典类型  包含商品名字和对应价格
# class Shopplist:
#                               #       """shopplist 是字典类型 包含商品名字和对应的价格"""
#     def __init__(self,shopp_list):
#         self.shopp_list=shopp_list
# #"""返回购物清单上有多少商品"""
#     def get_item_count(self):
#         return len(self.shopp_list)
# #"""返回购物清单商品价格总额数字"""
#     def get_total_price(self):
#         total_price=0
#         for price in self.shopp_list.values():
#             total_price=total_price+price
#         return total_price
#
#
#
#
# #!!!!!!!!!!!!!!!!!!!!!!!!下面是测试代码
# import unittest
# from hellow import Shopplist
#
# class Testshopple(unittest.TestCase):
#     def setUp(self):##这里定义了一个测试对象 所以使用setup的方法来提前定义好 就和类一样
#        self.shopp_list=Shopplist({"纸巾": 8, "帽子": 30, "拖鞋": 15})##这里的Shopplist是类 要和上面一致
#
# #下面是两个测试用例  记得要以test开头
#     def test_get_item_count(self):
#
#         self.assertEqual(self.shopp_list.get_item_count(),3)
#
#
#     def test_get_total_price(self):
#
#         self.assertEqual(self.shopp_list.get_total_price(), 55)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

下面是对题目的练习:

#第一题  输出两数之和
# a=int(input("请输入第一个数"))
# b=int(input("请输入第二个数"))
# print(a+b)

#————————————第二题 找出100以内的偶数
#思路 从1-100如果能让2除完  就代表是偶数  就输出
# a=100
# for i in  range(0,101,1):
#     if (i%2)==0:     #!!!!注意这里的 %是取余用算   /是取模运算
#        print(str(i)+"是偶数")


#———————————————————————找出100以内的奇数、

# for i in  range(1,101,1):
#     if (i%2)!=0:     #!!!!注意这里的 %是取余用算   /是取模运算
#        print(str(i)+"是奇数")
##------第三题 判断是否是素数
# i=int(input("请输入第入一个数"))
# p=3
# for s in range(2,i+1,1):
#     if i%s==0:
#         p=2
#         print(f"该{i}数不是素数")
#         break
# if p==3:
#     print(f"该数{i}是素数")
#___________________________第三题:求出某个自然数的阶乘   0的阶是1
# a=int(input("请输入所要求的数"))
# sum=1
# if a==0:
#     print(f"{a}的阶乘是1")
# else:
#     for i in range(1,a+1):
#         sum=i*sum
#
#     print(f"{a}的阶乘是{sum}")

#方法二  用递归  函数的自我调用

# def jiecheng(n):
#     if n-1==0:
#         return 1
#     else:
#         return n*jiecheng(n-1)
#
#
#
#
# a=int(input("请输入你要求的数:"))
# sum=jiecheng(a)
# print(sum)
#


#_______________________第6题  求圆的周长  编写程序输入半径  求出周长 求出圆的面积

# r=int(input("请输入半径"))
# print(f"该圆的周长是{2*3.14*r}")
#
#
# print(f"该圆的面积是{3.14*r**2}")

#_______________________第8题 求直角三角形斜边长   a平方+b平方=c平方   matf.sqrt这个函数是求平方的
# import math
# a=int(input("请输入第一直角边长"))
# b=int(input("请输入第二直角边长"))
# # c=(int(a)**2+int(b)**2)**(0.5)
# c=a*a+b*b
# c=math.sqrt(c)
# print(c)


#_______________________第9题 输入三个数 按从小到大输出三个数

# a=int(input("请输入第一个数:"))
# b=int(input("请输入第二个数:"))
# c=int(input("请输入第三个数:"))
# list1=[a,b,c]
# list1.sort()
# for i in list1:
#     print(i)


#_______________________第10题  输入整数 a b表示一个闭区间 找到所有素数并达英
# def sushu(i):
#     p=3
#     for s in range(2,i+1,1):
#         if i%s==0:
#           p=2
#         break
#     if p==3:
#         print(i)
#
#
# a=int(input("请输入第一个区间的数"))
# b=int(input("请输入第二个区间的数"))
# for l in range(a,b+1,1):
#     sushu(l)


#________不会!@!!!!!!!_______________第11题 有四个数字 1.2.3.4  能组成多少个互不相同   且无重复数字的三位数  哥是多少
##两个条件  互不相同  且不重复  三层for循环     !!!注意对列表的操作   x=list() 是建立一个列表
# x=list()
# sum=0
# for i in range(1,5):
#     for j in range(1,5):
#         for k in range(1, 5):
#             if i!=j and i!=k and j!= k:
#                 m=(1*100+j*10+k)
#                 x.append(m)
#                 sum=sum+1
# print(x)
# print(sum)


#-------------------------打印乘法口诀表   就是对每一个阶乘 和 它对应的数输出
#我想的这个不能 显示正确的表
# def daying(n):
#     if n==1:
#         print("1*1=1")
#     else:
#         for k in range(1,n+1):
#             print(f"{n}*{k}={k*n}")
#
#
# for i in range(1,4):
#     daying(i)


#!!!思路 讲行列分开处理
#end的作用就是告诉print 它自带的换行用end里面的数代替
# for i in range(1,10):
#     for j in range(1,i+1):      #第一行 一个公式  第二行两个 第三行三个  所以每一行有多少列 取决于是哪一行
#         print(f"{i}*{j}={i*j}",end=" ")
#     print()

找出水仙花数:


#-------------------------水仙花数  找出所有的水仙花数(是一个三位数  个数字立方和等于该数本身)


#下面讲这个数的每一个数都存如列表当中
# def panduan(a):
#     b=a
#
#     list=[]
#     while b/10!=0:
#         list.append(b%10)
#         b=b//10
#     sum=0
#     for c in list:
#         sum=c*c*c+sum
#
#     if sum==a:
#         print(a)
#
#
# #___输出所有三位数的水仙花数
# for i in range(100,1000):
#     panduan(i)

#______________也要注意一个操作就是 讲输入的整数转换成字符,在上面操作但当中也没必要一个个加入列表 这是c语言时候的思想  在这里可以直接转成字符
#再从字符转成列表

def panduan(a):

    list1=[]
    b = str(a)
    list1=list(b)         # !!!!!!!!!!!!你看这里就节约了好多时间
    sum=0
    for c in list1:
        sum=int(c)*int(c)*int(c)+sum

    if sum==a:
        print(a)


#___输出所有三位数的水仙花数
for i in range(100,1000):
    panduan(i)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值