超级详细的python知识点及练习题(附答案)
今天咱们继续来学习python的小知识吖,上一次木有看的同学请看:python8大核心语句
作者:阿玥的小东东
学习:python,正在学习c++
主页:阿玥的小东东
目录
1.复习及易错,快来学习!!
2.python习题
1. 输入一个百分制成绩
2. 篮球比赛案例
3.根据y=1+3-1+3-1+……+(2n-1)-1,求:
4. 购物卡案例
5. 设计一个猜数游戏
6. 赶鸭子
7. 编写函数
8.数字加密游戏
知识总结
python的基础知识和练习(附答案)大家先来学习哦
1.复习及易错,快来学习!!
1.编译:将高级语言源代码转换成目标代码(机器语言),程序便可运行。
好处:目标代码执行速度更快;目标代码在相同操作系统上使用灵活。
2.解释:将高级语言源代码逐条转换成目标代码同时逐条执行,每次运行程序需要源代码和解释器。
好处:便于维护源代码;良好的跨平台可移植性。
3.静态语言:编译执行的编程语言,如C、Jave等。
4.脚本语言:解释执行的编程语言,如PHP等。
5.python语言是脚本语言、通用语言、开源语言、跨平台语言和多模型语言。
6.IPO模式:
I:Input 输入,程序的输入;
P:Process处理,程序的主要逻辑;
O:Output输出,程序的输出。
7.程序编写的步骤:分析问题、确定问题(划分IPO模块)、设计算法、编写程序、调试程序、升级维护;
8.缩进: 1缩进 = 4个空格
作用:用以在python中表明代码的层次关系
缩进是python语言中表明程序框架的唯一手段
9.python对函数库引用的方式:
import <库名>,例:import turtle (<库名>.<函数名>)
from <库名> import <函数名>,from <库名> import *
2.python习题
1. 输入一个百分制成绩
要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:
使用if
语句实现;- 输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
代码:
a=eval(input('请输入成绩:'))
if a<0 or a>100 or a%1!=0:
print('您输入的成绩不合理,请检查后重新输入')
elif 90<=a<=100:
print('成绩等级:A')
elif 80<=a<=89:
print('成绩等级:B')
elif 70<=a<=79:
print('成绩等级:C')
elif 60<=a<=69:
print('成绩等级:D')
else:
print('成绩等级:E')
2. 篮球比赛案例
篮球比赛是高分的比赛,领先优势可能很快被反超。作为观众,希望能在球赛即将结束时,就提早知道领先是否不可超越。体育作家Bill James发明了一种算法,用于判断领先是否“安全”。
- 获取领先的分数 ,减去3分;
- 如果目前是领先队控球,则加0.5;否则减0.5(数字小于0则变成0);
- 计算平方后的结果;
- 如果得到的结果比当前比赛剩余时间的秒数大,则领先是“安全”的。
请编写程序实现上述算法的功能,并给出运行结果。
代码:
grade=eval(input('请输入领先分数:'))
time=eval(input('请输入剩余时间:'))
t=grade-3
w=input('目前是否为领先队控球(Y or N):')
if w == 'Y' or w == 'y':
g=(t+0.5)**2
else:
g=t-0.5
if g<=0:
g=0
g=g**2
if g>time:
print('领先是“安全”的')
else:
print('领先是“不安全”的')
3.根据y=1+3-1+3-1+……+(2n-1)-1,求:
- y<3时的最大n值。
- 与(1)的n值对应的y值。
代码:
x=1
y=0
while y<3:
y=y+1/(2*x-1)
x=x+1
print('y<3时的最大n值为{}'.format(x-1))
print('与(1)的n值对应的y值为{}'.format(y-1/(2*x-1)))
输出:
y<3时的最大n值为57
与(1)的n值对应的y值为2.9945914066381527
4. 购物卡案例
小明单位发了100元的购物卡,小明到超市买三类洗化用品:洗发水(15元)、香皂(2元)、牙刷(5元)。要把100元正好花掉,可有哪些购买组合?
代码:
money=100
n=money//15
for i in range(n,-1,-1):
m=(money-i*15)//5
for j in range(m,-1,-1):
k=(money-i*15-j*5)//2
if (money-i*15-j*5)%2==0:
print('可选择的购买组合:\t\t购买洗发水 {} 瓶,香皂 {} 块,牙刷 {}个。'.format(i,j,k))
输出:
可选择的购买组合: 购买洗发水 6 瓶,香皂 2 块,牙刷 0个。
可选择的购买组合: 购买洗发水 6 瓶,香皂 0 块,牙刷 5个。
可选择的购买组合: 购买洗发水 5 瓶,香皂 5 块,牙刷 0个。
可选择的购买组合: 购买洗发水 5 瓶,香皂 3 块,牙刷 5个。
可选择的购买组合: 购买洗发水 5 瓶,香皂 1 块,牙刷 10个。
可选择的购买组合: 购买洗发水 4 瓶,香皂 8 块,牙刷 0个。
可选择的购买组合: 购买洗发水 4 瓶,香皂 6 块,牙刷 5个。
可选择的购买组合: 购买洗发水 4 瓶,香皂 4 块,牙刷 10个。
可选择的购买组合: 购买洗发水 4 瓶,香皂 2 块,牙刷 15个。
可选择的购买组合: 购买洗发水 4 瓶,香皂 0 块,牙刷 20个。
可选择的购买组合: 购买洗发水 3 瓶,香皂 11 块,牙刷 0个。
可选择的购买组合: 购买洗发水 3 瓶,香皂 9 块,牙刷 5个。
可选择的购买组合: 购买洗发水 3 瓶,香皂 7 块,牙刷 10个。
可选择的购买组合: 购买洗发水 3 瓶,香皂 5 块,牙刷 15个。
可选择的购买组合: 购买洗发水 3 瓶,香皂 3 块,牙刷 20个。
可选择的购买组合: 购买洗发水 3 瓶,香皂 1 块,牙刷 25个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 14 块,牙刷 0个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 12 块,牙刷 5个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 10 块,牙刷 10个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 8 块,牙刷 15个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 6 块,牙刷 20个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 4 块,牙刷 25个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 2 块,牙刷 30个。
可选择的购买组合: 购买洗发水 2 瓶,香皂 0 块,牙刷 35个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 17 块,牙刷 0个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 15 块,牙刷 5个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 13 块,牙刷 10个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 11 块,牙刷 15个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 9 块,牙刷 20个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 7 块,牙刷 25个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 5 块,牙刷 30个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 3 块,牙刷 35个。
可选择的购买组合: 购买洗发水 1 瓶,香皂 1 块,牙刷 40个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 20 块,牙刷 0个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 18 块,牙刷 5个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 16 块,牙刷 10个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 14 块,牙刷 15个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 12 块,牙刷 20个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 10 块,牙刷 25个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 8 块,牙刷 30个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 6 块,牙刷 35个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 4 块,牙刷 40个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 2 块,牙刷 45个。
可选择的购买组合: 购买洗发水 0 瓶,香皂 0 块,牙刷 50个。
5. 设计一个猜数游戏
首先由计算机产生一个[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won !”,游戏结束。用户最多可以猜7次,如果7次均未猜中,则显示“You lost !”,并给出正确答案,游戏结束。游戏结束后,询问用户是否继续游戏,选择“Y”则开始一轮新的猜数游戏;选择“N”则退出游戏。
代码:
chose = 'y'
while chose=='Y' or chose=='y':
import random
num = random.randint(1,100)
def judge(b):
if b == num:
return 1
else:
return 0
for i in range(1,8):
b=eval(input('请输入您第{}次所猜的整数:'.format(i)))
if judge(b)==1:
print("You won !")
break
elif b > num:
print("high")
elif b < num:
print("low")
if judge(b)==0:
print("You lost !")
chose=input('请输入Y(y)继续进行游戏,N(n)退出游戏:')
while chose != 'Y' and chose != 'y' and chose != 'N' and chose != 'n':
print('输入有误,请重新输入Y(y)继续进行游戏,N(n)退出游戏:',end = '')
chose=input()
输出:
请输入您第1次所猜的整数:2
low
请输入您第2次所猜的整数:5
low
请输入您第3次所猜的整数:8
low
请输入您第4次所猜的整数:7
low
请输入您第5次所猜的整数:50
low
请输入您第6次所猜的整数:60
low
请输入您第7次所猜的整数:80
high
You lost !
请输入Y(y)继续进行游戏,N(n)退出游戏:n
6. 赶鸭子
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?
代码:
def f(n):
if n == 8:
return 2
else:
sum = f(n+1)*2+2
return sum
print('一共有{}只鸭子'.format(f(1)))
一共510只哦
7. 编写函数
该函数可以输入任意多个数,函数返回输出所有输入参数的最大值、最小值和平均值。
代码:
import numpy as py
x=input('请输入一组数并用空格隔开:')
def f(x):
lis =list(x.split(' '))
for i in range(len(lis)):
lis[i]=eval(lis[i])
print('该组数值的最大值为:',max(lis))
print('该组数值的最小值为:',min(lis))
print('该组数值的平均值为:',py.mean(lis))
f(x)
输出:
请输入一组数并用空格隔开:5 4 10
该组数值的最大值为: 10
该组数值的最小值为: 4
该组数值的平均值为: 6.333333333333333
8.数字加密游戏
编程程序,从键盘任意输入1个4位数,将该数字中的每位数与7相乘,然后取乘积结果的个位数对该数字进行替换,最后得到1个新的4位数。
代码:
n = int(input('任意输入1个4位数:'))
if 1000<=n<=9999:
a=n%10
b=(n-a)%100/10
c=(n-a-10*b)%1000/100
d=(n-a-10*b-100*c)%10000/1000
a=a*7%10
b=b*7%10
c=c*7%10
d=d*7%10
n=1000*d+100*c+10*b+a
print(int(n))
elif n<=1000 or n>=9999:
print("您输入的数字不符合要求,请输入一个四位数字")
知识总结
在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。
下面我们介绍time模块中常用的几个函数:
1)time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
2)time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间转换为UTC时区(0时区)的struct_time
3)time.time():返回当前时间的时间。
4)time.mktime(t):将一个struct_time转化为时间。5)time.sleep(secs):线程推迟指定的时间运行。单位为秒。
6)time.clock():这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)
7)time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Sun Jun 20 23:21:05 1993'。如果没有参数,将会将time.localtime()作为参数传入。
8)time.ctime([secs]):把一个时间(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
9)time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。
10)time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
散会