学习目标:
开始大家是萌新
最初的15天,都是Python语言基础的修炼。基本功很重要
贵在坚持,一定要每天做一些小练习!
加油!Fighting!!!
学习内容:
**1.计算BMI指数
**
height = float(input("请输入你的身高 (单位为米): "))
weight = float(input("请输入你的体重 (单位为千克) : "))
bmi = weight / (height * height)
print("您的bmi指数为:" + str(bmi))
if bmi < 18.5:
print("您的体重过轻!!")
if bmi >= 18.5 and bmi < 24.9:
print("正常范围,继续保持 ")
if bmi >= 24.9 and bmi < 29.9:
print("您的体重过胖!!")
if bmi >= 29.9:
print("肥胖!!!")
2. import 模块名
import math
import random
import posixpath as path
print(math.sqrt(16)) #计算并输出16的平方根
print(math.cos(math.pi/4)) #计算余弦值
print(random.choices('abcd', k=8)) #从字符串'abcd'随机选择8个字符
print(path.isfile(r'C:\Windows\notepad.exe')) #测试指定路径是否为文件
3.from 模块名 import 对象名
from math import pi as PI
from os.path import getsize
from random import choice
r = 3
print(round(PI*r*r,2)) #计算半径为3的圆的面积
print(getsize(r'C:\Windows\notepad.exe')) #计算文件大小,单位为字节
print(choice('Python')) #从字符串中随机选择一个字符
4.from模块名 import *
from itertools import *
characters = '1234'
for item in combinations(characters,3): #从4 个字符串中任选3个的组合
print(item, end='') #“end=''“表示输出后不换行
print('\n'+'='*20) #换行后输出20个等于号
for item in permutations(characters, 3): #从4 个字符中任选3个的排列
print(item,end='')
5.整数,浮点数,复数
import math
print(math.factorial(32)) #计算 32 的阶乘
print(0.4-0.3 == 0.1) #浮点数之间尽量避免直接比较大小
print(math.isclose(0.4-0.3,0.1)) #测试两个浮点数之间是否接近
num = 7
squreRoot = num ** 0.5 #计算平方根
print(squreRoot**2 == num)
print(math.isclose(squreRoot**2, num))
c = 3+4j #Python 内置支持复数类型及其运算
print(c+c) #复数相加
print(c**2) #幂运算
print(c.real) #查看复数的实部
print(c.imag) #查看复数的虚部
print(c+4j.imag) #相当于 3+(4j).imag
print(c.conjugate()) #查看共轭复数
print(abs(c)) #计算复数的模
6.列表,元组,字典,集合
创建列表对象
x_list = [1,2,3]
创建元组对象
x_tuple = (1,2,3)
创建字典对象,元素的形式为 “键:值”
x_dict = {'a':97, 'b':98, 'c':99}
创建集合对象
x_set = {1,2,3}
使用下标访问列表中指定位置的元素,元素下标从0开始
print(x_list[1])
元组也支持使用序号作为下标,1 表示第二个元素的下标
print(x_tuple[1])
#访问字典中特定“键”对应的“值”,字典对应的下标是“键”
print(x_dict['a'])
#查看列表长度,也就是其中元素的个数
print(len(x_list))
#查看元素 2 在元组中首次出现的位置
print(x_tuple.index(2))
#查看字典中哪些“键”对应的“值”为98
for key, value in x_dict.items():
if value == 98:
print(key)
1.1 lambda 表达式
也可以给lambda 表达式起名字,定义具体函数名
func = lambda x, y: x+y
像调用函数一样调用lambda 表达式
print(func(3, 5))
data = [9, 88, 444]
按各位数字之和的大小升序排序
print(sorted(data, key=lambda num: sum(map(int, str(num)))))
输出转换成字符串之后的长度最大的数字
print(max(data, key=lambda num: len(str(num))))
1.2 递归函数
编写递归函数,计算组合数c(n,i),也就是从n个物品中任选i个的选法
#
from functools import lru_cache
#
使用修饰器,增加用来记忆中间结果的缓存
#
@lru_cache(maxsize=64)
def cni(n,i):
if n==i or i==0:
return 1
return cni(n-1,i) + cni(n-1,i-1)
#
print(cni(5, 2))
#
#
# 1.3位置参数
def add(a,b):
print('In function:a={},b={}'.format(a,b))
return a+b
#
print(add(3, 5))
#
# 1.4 默认值参数
def add(a, b=5):
print('In function:a={},b={}'.format(a,b))
return a+b
#
print(add(3))
print(add(3,8))
#
#
# 1.5 关键参数
def add(a,b):
print('In function:a={},b={}'.format(a,b))
return a+b
print(add(b=8, a=3))
#
#
# 1.6 可变长度参数
#
def add(a, b, *args, **kwargs):
print('In function:\na={}\nb={}\nargs={}'.format(a,b, args, kwargs))
return a+b+sum(args)+sum(kwargs.values())
#
print(add(3, 8, 1, 2, 3, 4, x=5, y=6, z=7))
print('='*20)
print(add(1, 2, 3, 4, 5, 6, 7, 8, 9, x=10, y=11))
#
#
2.1 变量作用域
#
#def func():
global x
x = 666
y = 888
print(x, y, z, sep=',')
#
x, y, z = [3, 5, 7]
func()
3.1 使用递归法计算自然数各位数字之和
def digitSum():
if n ==0:
return 0
# 先计算除最后一位的其他位之和
# 再加上最后一位
return digitSum(n//10) + n%10
函数小练习
1.编写一个函数calcluate,可以接收任意多个数,返回的是一个元组 #元组的第一个值为所有参数的平均值,第二个值大于平均值的所有数
#
def calculate(*args):
ave = sum(args) / len(args)
up_num=[]
for i in args:
if i > ave:
up_num.append(i)
return ave, up_num
print(calculate(1, 2, 3, 4, 5))
2. 编写一个函数,接收字符串参数,返回一个元祖,‘hello,WORLD’ #元组的第一个值为大写字母的个数,第二个值为小写字母个数
def fun(x):
upper_count = 0
lower_count = 0
for item in x:
if item.isupper():
upper_count+=1
elif item.islower():
lower_count+=1
else:
continue
return upper_count,lower_count
print(fun('hello WORLD'))
3.编写函数,接收一个列表(包含30个整形数)和一个整形数k,返回一个新列表 #函数需求: 1.将列表下标k之前对应(不包含k)的元素逆序 2.将下标k及之后的元素逆序 3.[1,2,3,4,5]2[2,1,5,4,3]
list = []
def fun(new_list, k):
if k <0 or k >len(new_list):
return 'error'
return new_list[:k][::-1] + new_list[k:][::-1]
print(fun([1,2,3,4,5],2))
4 .用函数实现100-200里面的所有的素数
def test(num):
list = []
i = num - 1
while i > 1:
if num % i ==0:
list.append(i)
i -= 1
if len(list) == 0:
print(num, end=' ')
#
def test2(start_num, stop_num):
j = start_num
while j < stop_num:
test(j)
j += 1
test2(100, 200)
print('')
**
5.模拟转盘抽奖游戏
**
#转盘分为三部分:一等奖,二等奖和三等奖
#转盘转的时候是随机的
#如果范围在[0,0.08)之间,代表一等奖
#如果范围在[0.08,0.3)之间,代表二等奖
#如果范围在[0.3,1.0)之间,代表三等奖
#模拟本次活动1000人参加,模拟游戏是需要准备各等级奖品的个数
import random
#print(random.random())
rewardDict = {
'一等奖':(0,0.08),
'二等奖':(0.08,0.3),
'三等奖':(0.3,1)
}
#
def rewardFun():
""""用户的得奖等级"""
# 生成一个0~1之间的随机数
number = random.random()
# 判断随机转盘是几等奖
for k,v in rewardDict.items():
if v[0] <=number <=v[1]:
return k
#print(rewardFun())
#
resultDict={}
for i in range(1000):
res = rewardFun()
if res not in resultDict:
resultDict[res] = 1
else:
resultDict[res] +=1
#
for k,v in resultDict.items():
print(k,'---->',v)
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
学习时间:
可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点
这样可以更加有动力持续地学习.
总结:
1.我一开始也和很多人一样,来一题做一题。做一题,下一题又不会了。感觉进度很慢,而且感觉没有什么进步和积累。但是练的多了,就容易养成一种编程的思维,就变得简单了.
- 对于代码能力,我们可以选择一些简单的题目或者是我们做过的题目,稍微整理一下思路(不会的先看别人的题解,理解思路消化一下),然后开始写代码。