Python代码练习1

学习目标:

开始大家是萌新

最初的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.我一开始也和很多人一样,来一题做一题。做一题,下一题又不会了。感觉进度很慢,而且感觉没有什么进步和积累。但是练的多了,就容易养成一种编程的思维,就变得简单了.

  1. 对于代码能力,我们可以选择一些简单的题目或者是我们做过的题目,稍微整理一下思路(不会的先看别人的题解,理解思路消化一下),然后开始写代码。

慢慢来,take it easy!!! 如果您觉得这篇文章有帮助,麻烦点个赞加粗样式**再走哈,谢谢!!!****

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未末0902

你的鼓励与支持是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值