快 速 入 门 : p y t h o n 100 例 快速入门:python100例 快速入门:python100例
对部分案例进行修改和扩展,想起啥写啥!
实例001:数字组合
题目 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
#思路:遍历所有的可能性,去除重复的
total = 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):
print(100*i+10*j+k)
total += 1
print(total)
实例002:“个税计算”
题目 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
#思路:分段计算
l = float(input("输入利润(万元):"))
out = 0
if l<10:
out = l*0.1
elif l<20:
out = 10*0.1+(l-10)*0.075
elif l<40:
out = 10*0.1+10*0.075+(l-20)*0.05
elif l<60:
out = 10*0.1+10*0.075+20*0.05+(l-40)*0.03
elif l<100:
out = 10*0.1+10*0.075+20*0.05+20*0.03+(l-60)*0.015
else:
out = 10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(l-100)*0.01
print(out,"万元")
#参考答案
profit=int(input("输入利润(万元):"))
bonus=0
thresholds=[10,10,20,20,40]
rates=[0.1,0.075,0.05,0.03,0.015,0.01]
for i in range(len(thresholds)):
if profit<=thresholds[i]:
bonus+=profit*rates[i]
profit=0
break
else:
bonus+=thresholds[i]*rates[i]
profit-=thresholds[i]
bonus+=profit*rates[-1]
print(bonus,'万元')
实例003:完全平方数
题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#思路:整数+100为完全平均数,那么该数最小为-100,而加168后还是完全平方数,那么该数的一定小于168/2
for i in range(100):
for j in range(100):
if i**2 - 100 == j**2 - 268:
print(i**2 - 100)
#思路:整数+100为完全平均数,那么该数最小为-100
#参考答案
import math
for i in range(-100,10000):
m1=math.sqrt(i+100)
m2=math.sqrt(i+100+168)
if(m1==int(m1)):
if(m2==int(m2)):
print(i)
实例004:这天第几天
题目 输入某年某月某日,判断这一天是这一年的第几天?
#思路:重点在于二月是否多一天
time = input("年月日:")
time = time.split('.')
day = 0
mouth = [31,28,31,30,31,30,31,31,30,31,30,31]
print(time)
if (int(time[0])%4 == 0 and int(time[0])%100 != 0) or (int(time[0])%400 == 0):
mouth[1] = 29
for i in range(int(time[1])-1):
day += mouth[i]
day += int(time[2])
print(day)
#参考答案
def isLeapYear(y):
return (y%400==0 or (y%4==0 and y%100!=0))
DofM=[0,31,28,31,30,31,30,31,31,30,31,30]
res=0
year=int(input('Year:'))
month=int(input('Month:'))
day=int(input('day:'))
if isLeapYear(year):
DofM[2]+=1
for i in range(month):
res+=DofM[i]
print(res+day)
实例005:三数排序
题目 输入三个整数x,y,z,请把这三个数由小到大输出。
str_num = input('请输入三个整数x,y,z:')
num = []
for i in str_num.split(','):
num.append(int(i))
print(sorted(num))
实例006:斐波那契数列
题目 斐波那契数列。
#计算第end个斐波那契的值
end = int(input("请输入斐波那契数列的长度:"))
def Fib(n):
abc = 0
if n==1 or n==2:
abc = 1
else:
abc = Fib(n-1) + Fib(n-2)
return abc
Fib(end)
end = int(input("请输入斐波那契数列的长度:"))
def Fib2(n):
Fib_list = []
abc2 = 0
for i in range(n):
if i==0 or i==1:
Fib_list.append(1)
else:
Fib_list.append(Fib_list[-1]+Fib_list[-2])
return Fib_list
print(Fib2(end))
实例007:copy
题目 将一个列表的数据复制到另一个列表中。
import copy
a = [1,2,3,4,["a","b"]]
b = a[:] #浅拷贝
c = copy.copy(a) #浅拷贝
d = copy.deepcopy(a) #深拷贝
print(a)
print(b)
print(c)
print(d)
a.append(5)
a[4].append("c")
print(a)
print(b)
print(c)
print(d)
实例008:九九乘法表
题目 输出 9*9 乘法口诀表。
#思路:分行和列考虑,i控制行,j控制列
#print不换行(end='')
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%d'%(i,j,i*j),end=" ")
print("\n")
实例009:暂停一秒输出
题目 暂停一秒输出。
import time
for i in range(4):
print(i)
time.sleep(1)
实例010:给人看的时间
题目 暂停一秒输出,并格式化当前时间。
import time
for i in range(4):
print(i)
time.sleep(1)
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) )
实例011:养兔子
题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#思路:最终结果是斐波那契
mouth = int(input("一共繁殖几个月:"))
def Feb(mouth):
if mouth==1 or mouth==2:
num = 2
else:
num = Feb(mouth-1) + Feb(mouth-2)
return num
Feb(mouth)
实例012:100到200的素数
题目 判断101-200之间有多少个素数,并输出所有素数。
math模块:
math.min(),math.max():确定一组数据的最大值和最小值
math.ceil():向上舍入,取最接近的整数
math.floor():向下舍入,取最接近的整数
math.round():取最接近的整数
math.random():返回0到1之间的随机数,不包括0和1
math.sqrt():取平方根
math.abs():取绝对值
math.exp():取n次幂
import math
for i in range(101,201):
for j in range(2,round(math.sqrt(i))+1): #可以写成i,但最好写成round(math.sqrt(i))+1
if i%j == 0: #不是素数
break
else:
print(i)
实例013:所有水仙花数
题目 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000):
x = int(i/100) #百位
y = int(i%100/10) #十位
z = i%10 #个位
if x**3+y**3+z**3 == i:
print(i)
#参考答案
for i in range(100,1000):
s=str(i)
one=int(s[-1])
ten=int(s[-2])
hun=int(s[-3])
if i == one**3+ten**3+hun**3:
print(i)
实例014:分解质因数
题目 将一个整数分解质因数。例如:输入90,打印出90=2 * 3 * 3 * 5。
#方法一
num = int(input("请输入大于等于3的整数:"))
print(num,"=",end='')
if num<=0:
num = abs(num)
print("-1*",end='')
a = []
def div(n):
n = int(n)
for i in range(2,n+1):
if n%i == 0: #i是质因数
a.append(i)
n = n/i
div(n)
break
div(num)
#调整格式
for i in range(len(a)-1):
print(a[i],"*",end="")
print(a[-1])
#方法二
target=int(input('输入一个整数:'))
print(target,'= ',end='')
if target<0:
target=abs(target)
print('-1*',end='')
flag=0
if target<=1:
print(target)
flag=1
while True:
if flag:
break
for i in range(2,int(target+1)):
if target%i==0:
print("%d"%i,end='')
if target==i:
flag=1
break
print('*',end='')
target/=i
break
实例015:分数归档
题目 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
#if-else
score = int(input("输入分数:"))
if score>60:
if score>=90:
print('A')
else:
print('B')
else:
print('C')
#if-elif-else
score = int(input("输入分数:"))
if score>=90:
print('A')
elif score>=60 and score<=89:
print('B')
else:
print('C')
实例016:输出日期
题目 输出指定格式的日期
import datetime
print(datetime.date.today())
print(datetime.date(2020,11,3))
print(datetime.date.today().strftime('%d/%m/%Y'))
实例017:字符串构成
题目 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
in_str = input("请输入一行字符:")
i = 0
letters = 0
space = 0
digit = 0
others = 0
while i<len(in_str):
if in_str[i].isalpha():
letters+=1
elif in_str[i].isspace():
space+=1
elif in_str[i].isdigit():
digit+=1
else:
others+=1
i+=1
print("英文字母有%d个"%letters)
print("空格有%d个"%space)
print("数字有%d个"%digit)
print("其它字符有%d个"%others)
实例018:复读机相加
题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
a = int(input("请输入a的值:"))
b = int(input("请输入多少个数相加:"))
def num(a,b):
c = [a]
out = 0
for i in range(1,b):
c.append(c[-1]*10+a)
print(c)
return sum(c)
num(a,b)
#思路:用字符串解决
a = input("请输入a的值:")
b = int(input("请输入多少个数相加:"))
sum(int(a * i) for i in range(1, b+1))
实例019:完数
题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
num_sum = 0
for i in range(2,1000):
for j in range(1,i):
if i%j==0:
num_sum += j
if num_sum == i:
print(i)
num_sum = 0
实例020:高空抛物
题目 一球从100米高度*落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#注意:第10次反弹是第11次落地,total=100的时候是第一次落地
high = 100
total = 100
for i in range(10):
high = high*0.5
total += 2*high
total = total - 2*high
print("第10次反弹%f米" % high)
print("在第10次落地时,共经过%f米" % total)
实例021:猴子偷桃
题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
peach=1
for i in range(9):
peach=(peach+1)*2
print(peach)
实例022:比赛对手
题目 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
A = ['a','b','c']
B = ['x','y','z']
for i in B:
for j in B:
for k in B:
if i!=j and i!=k and j!=k and i!='x' and k!='x' and k!='z':
print("a:",i,"b:",j,"c:",k)
实例023:画菱形
题目 打印出如下图案(菱形):
*
***
*****
*******
*****
***
*
#笨办法,按图打印
for i in range(4):
print(" "*(4-i)+"*"*(2*i+1))
for i in range(3):
print(" "*(i+2)+"*"*(5-2*i))
#函数的方法
def draw(num):
a="*"*(2*(4-num)+1)
print(a.center(9,' '))
if num!=1:
draw(num-1)
print(a.center(9,' '))
draw(4)
实例024:斐波那契数列II
题目 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
def Fib(n):
if n==1 or n==2:
fbnq = 1
else:
fbnq = Fib(n-1)+Fib(n-2)
return fbnq
Fib_list = []
for i in range(1,21):
Fib_list.append(Fib(i+2)/Fib(i+1))
print(sum(Fib_list))
实例025: 阶乘求和
题目 求1+2!+3!+…+20!的和。
def factorial(i):
f = 1
for j in range(1,i+1):
f = f*j
return f
sum = 0
for k in range(1,21):
sum += factorial(k)
print(sum)
实例026:递归求阶乘
题目 利用递归方法求5!。
def factorial1(n):
return n*factorial1(n-1) if n>1 else 1
factorial1(5)
实例027:递归输出
题目 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#递归
def rec(string):
if len(string)<=1:
return string
return rec(string[1:]) +string[0]
rec(input('string here:'))
#扩展:字符串倒序的另外两种方法
in_str = list(input("请输入5个字符:"))
in_str.reverse()
print(''.join(in_str))
print(in_str[::-1])
实例028:递归求等差数列
题目 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
def age(n):
if n==1:
return 10
return 2+age(n-1)
print(age(5))
实例029:反向输出
题目 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
num = int(input("请输入一个不多于5位的正整数:"))
a = 1
for i in range(5):
if num/10>=1:
a += 1
print(num%10)
num = int(num/10)
print(num%10)
print("输入的数据是%d位数"%a)
num = input("请输入一个不多于5位的正整数:")
print("输入是%d位数"%len(num))
num = list(num)
print(num[::-1])
实例030:回文数
题目 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
num = int(input("请输入一个5位数:"))
a = []
for i in range(5):
a.append(num%10)
num = int(num/10)
print(a)
if a[0]==a[4] and a[1]==a[3]:
print("输入数字是回文数")
else:
print("输入数字不是回文数")
#直接使用字符串
num = input("请输入一个5位数:")
if num[0]==num[4] and num[1]==num[3]:
print("输入数字是回文数")
else:
print("输入数字不是回文数")
实例031:字母识词
题目 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
#星期的英文:Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday
week1 = input("请输入星期几的第一个字母:").lower()
fir =['m','t','w','t','f','s','s']
chi = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
num = 0
for i in range(len(fir)):
if week1 == fir[i]:
num += 1
print(chi[i])
if num > 1:
week2 = input("请输入星期几的第二个字母:").lower()
if week1 == "s":
if week2 == "a":
print(chi[5])
else:
print(chi[6])
if week1 == "t":
if week2 == "u":
print(chi[1])
else:
print(chi[3])
#星期的英文:Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday
#思路:使用字典
weekt = {"u":'Tuesday',
"h":'Thursday'}
weeks = {"a":'Saturday',
"u":'Sunday'}
week = {"m":'Moday',
"t":weekt,
"w":'Wednesday',
"f":'Friday',
"s":weeks}
day = week[input("请输入星期几的第一个字母:").lower()]
if day == weekt or day1 == weeks:
print(day[input("请输入第二个字母:").lower()])
else:
print(day)
实例032:反向输出II
题目 按相反的顺序输出列表的值。
a = ['one', 'two', 'three']
print(a[::-1])
实例033:列表转字符串
题目 按逗号分隔列表。
a = ['one', 'two', 'three']
print(','.join(a))
print(','.join([i for i in a]))
实例034:调用函数
题目 练习函数调用。
def hello():
print('Hello World!')
def helloAgain():
for i in range(2):
hello()
if __name__=='__main__':
helloAgain()
实例035:设置输出颜色
题目 文本颜色设置。
print("\033[1;31;40m!啊哦\033[0m")
print("\033[5;31;44m%s\033[0m" % "!啊哦")
知识点:文本颜色设置
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)
显示方式: 0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、 5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
格式:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m
实例036:算素数
题目 求100之内的素数。
num = 0
for i in range(2,101):
for j in range(2,i):
if i%j==0: #不是素数
break
else:
print(i)
实例037:排序
题目 对10个数进行排序。
raw=[]
for i in range(10):
x=int(input('int%d: '%(i)))
raw.append(x)
print(sorted(raw))
实例038:矩阵对角线之和
题目 求一个3*3矩阵主对角线元素之和。
mat=[[1,2,3],
[3,4,5],
[4,5,6]]
out = 0
for i in range(len(mat)):
out += mat[i][i]
print(out)
实例039:有序列表插入元素
题目 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
lists = [1,10,100,1000,10000]
n = int(input("请输入一个数字:"))
for i in range(len(lists)):
if n<lists[i]:
lists.insert(i,n)
break
print(lists)
实例040:逆序列表
题目 将一个数组逆序输出。
lists = [1,10,100,1000,10000,100000]
for i in range(int(len(lists)/2)):
lists[i],lists[len(lists)-i-1]=lists[len(lists)-i-1],lists[i]
print("交换位置",lists)
lists = [1,10,100,1000,10000,100000]
print("倒序输出",lists[::-1])
lists = [1,10,100,1000,10000,100000]
lists.reverse()
print("reverse方法",lists)
实例041:类的方法与变量
题目 模仿静态变量的用法。
def varfunc():
var = 0
print('var = %d' % var)
var += 1
if __name__ == '__main__':
for i in range(3):
varfunc()
# 类的属性
# 作为类的一个属性吧
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print(self.StaticVar)
print(Static.StaticVar)
a = Static()
for i in range(3):
a.varfunc()
实例042:变量作用域
题目 学习使用auto定义变量的用法。
num = 2
def autofunc():
num = 1
print('internal block num = %d' % num)
num += 1
for i in range(3):
print('The num = %d' % num)
num += 1
autofunc()
实例043:作用域、类的方法与变量
题目 模仿静态变量(static)另一案例。
class Num:
nNum = 1
def inc(self):
self.nNum += 1
print('nNum = %d' % self.nNum)
if __name__ == '__main__':
nNum = 2
inst = Num()
for i in range(3):
nNum += 1
print('The num = %d' % nNum)
inst.inc()
实例044:矩阵相加
题目 计算两个矩阵相加。
import numpy as np
X = [[12,7,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[5,8,1],
[6,7,3],
[4,5,9]]
Z = np.zeros((3,3))
for i in range(len(X)):
for j in range(len(X[i])):
Z[i][j] = X[i][j] + Y[i][j]
print(Z)
实例045:求和
题目 统计 1 到 100 之和。
print(sum([i for i in range(101)]))
实例046:打破循环
题目 求输入数字的平方,如果平方运算后小于 50 则退出。
while True:
try:
num = float(input("请输入一个数字:"))
except:
print('请输入数字')
continue
print("%.2f的平方为%.2f"%(num,num**2))
if num**2<50:
break
实例047:函数交换变量
题目 两个变量值用函数互换。
def change(a,b):
a,b = b,a
return a,b
a = 10
b = 2
print(change(a,b))
实例048:数字比大小
题目 数字比较。
a = 10
b = 2
if a-b>0:
print("a大于b")
elif a-b==0:
print('a等于b')
elif a-b<0:
print('a小于b')
else:
print('嗯。。。')
实例049:lambda
题目 使用lambda来创建匿名函数。
#lambda匿名函数
z = lambda x,y:x+y
print(z(2,4))
from functools import reduce
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(list(filter(lambda x: x % 3 == 0, foo))) #filter输出迭代器
print(list(map(lambda x: x * 2 + 10, foo))) #map输出迭代器
print(reduce(lambda x, y: x + y, foo)) #reduce函数会对参数序列中元素进行累积。
实例050:随机数
题目 输出一个随机数。
import random
print(random.random())
print(random.randint(1,10)) #生成1到10之间的一个整数型随机数
print(random.uniform(1.2,4.5)) #生成1.2到4.5之间的随机数
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(random.choice(foo)) #从foo列表中随机选取一个随机数
print(random.randrange(1,100,2)) #生成1到100之间的间隔为2的随机数
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
random.shuffle(foo)
print(foo) #将foo中的元素顺序打乱
实例051:按位与
题目 学习使用按位与 & 。
a = 0o77
print(eval(str(a)))
print(a)
b = a & 3
print(b)
b = b & 7
print(b)
知识点:进制转换
#10进制转换为其他进制
#方法一:
print(bin(10))
print(oct(10))
print(hex(10))
#方法二:format
print('{:b}'.format(10))
print('{:o}'.format(10))
print('{:x}'.format(10))
#其他进制转换为10进制
#方法一
#int的两个参数,第一个为要进行转换的数字,需要用引号括住,第二个参数用来说明前一个数字是什么进制
print(int('0b1010',2))
print(int('0o12',8))
print(int('0xa',16))
#方法二:eval函数
print(eval('0b1010'))
print(eval('0o12'))
print(eval('0xa'))
实例052:按位或
题目 学习使用按位或 | 。
a = 0o77
print(a)
b = a|3
print(b)
b = b|88
print(bin(88))
print(bin(0o77))
print(b)
实例053:按位异或
题目 学习使用按位异或 ^ 。
a = 0o77
print(bin(a))
b = a^3
print(b)
print(bin(b))
b = b^88
print(bin(88))
print(bin(b))
print(bin(b))
实例054:位取反、位移动
题目 取一个整数a从右端开始的4〜7位。
a=int(input('输入一个数字: '))
b=0 # 0
b=~b # 1
b=b<<4 # 10000
b=~b # 1111
c=a>>4
d=c&b
print('a:',bin(a))
print('b:',bin(b))
print('c:',bin(c))
print('d:',bin(d))
实例055:按位取反
题目 学习使用按位取反~。
知识点:什么叫按位取反,取反和反码?
取反:0变1,1变0
反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)
按位取反(~):首位不变,取反码,末尾加1。
如:9
二进制表示:0000 1001
反码:1111 0110
按位取反:(首位不变,取反码)1(原二进制表示,末尾加1)000 1001+1 = 1000 1010
首位为1表示负数,即为-10
print(~9)
print(bin(9))
print(bin(~9))
print(~~9)
实例056:画圈
题目 画图,学用circle画圆形。
circle(radius,extent)函数:参数radius取像素值、extent取角度的整数值,两参数均可取正负值
plt.contour([X, Y,] Z, [levels], ** kwargs):主要对网格中每个点的值等于一系列值的时候做出一条条轮廓线,类似于等高线
#参考答案
from tkinter import *
canvas=Canvas(width=800,height=600,bg='yellow')
canvas.pack(expand=YES,fill=BOTH)
k=1
j=1
for i in range(26):
canvas.create_oval(310-k,250-k,310+k,250+k,width=1)
k+=j
j+=0.3
mainloop()
from turtle import *
speed(10)
color('pink') #颜色
pensize(5)
circle(radius = 100)
plt画圆:
import numpy as np # 导入数据包主要处理数据
import matplotlib.pyplot as plt #导入图形包
x = y = np.arange(-4, 4, 0.1) #函数返回一个有终点和起点的固定步长的排列
x, y = np.meshgrid(x,y) #生成网格点坐标矩阵
plt.contour(x, y, x**2 + y**2, [9]) #x**2 + y**2 = 9 的圆形
plt.contour(x, y, 2*x**2 + y**2, [9])
plt.axis('scaled')
plt.show() # 展示出来
实例057:画线
题目 画图,学用line画直线。
#参考答案
if __name__ == '__main__':
from tkinter import *
canvas = Canvas(width=300, height=300, bg='green')
canvas.pack(expand=YES, fill=BOTH)
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):
canvas.create_line(x0,y0,x0,y1, width=1, fill='red')
x0 = x0 - 5
y0 = y0 - 5
x1 = x1 + 5
y1 = y1 + 5
x0 = 263
y1 = 275
y0 = 263
for i in range(21):
canvas.create_line(x0,y0,x0,y1,fill = 'red')
x0 += 5
y0 += 5
y1 += 5
mainloop()
import turtle
def drawline(n):
t = turtle.Pen()
t.color(0.3, 0.8, 0.6) # 设置颜色,在0--1之间
#t.begin_fill() # 开始填充颜色
for i in range(n): # 任意边形
t.forward(50)
t.left(360 / n)
#t.end_fill() # 结束填充颜色
drawline(5)
实例058:画矩形
题目 画图,学用rectangle画方形。
#参考答案
if __name__ == '__main__':
from tkinter import *
root = Tk()
root.title('Canvas')
canvas = Canvas(root,width = 400,height = 400,bg = 'yellow')
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):
canvas.create_rectangle(x0,y0,x1,y1)
x0 -= 5
y0 -= 5
x1 += 5
y1 += 5
canvas.pack()
root.mainloop()
实例059:画图
题目 画图,综合例子。
#参考答案
if __name__ == '__main__':
from tkinter import *
canvas = Canvas(width = 300,height = 300,bg = 'green')
canvas.pack(expand = YES,fill = BOTH)
x0 = 150
y0 = 100
canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10)
canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20)
canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50)
import math
B = 0.809
for i in range(16):
a = 2 * math.pi / 16 * i
x = math.ceil(x0 + 48 * math.cos(a))
y = math.ceil(y0 + 48 * math.sin(a) * B)
canvas.create_line(x0,y0,x,y,fill = 'red')
canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60)
for k in range(501):
for i in range(17):
a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k
x = math.ceil(x0 + 48 * math.cos(a))
y = math.ceil(y0 + 48 + math.sin(a) * B)
canvas.create_line(x0,y0,x,y,fill = 'red')
for j in range(51):
a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1
x = math.ceil(x0 + 48 * math.cos(a))
y = math.ceil(y0 + 48 * math.sin(a) * B)
canvas.create_line(x0,y0,x,y,fill = 'red')
mainloop()
turtle库
基本函数说明参考:https://blog.csdn.net/lzqg1990/article/details/88077597
绘制状态函数:
pendown()/pd():落笔,之后移动画笔将绘制形状
penup()/pu():抬笔,之后移动画笔将不绘制形状
pensize(width):画笔线条宽度,None或空时,返回当前画笔宽度
颜色控制函数:
color():返回或设置画笔及填充颜色
当画笔及填充颜色相同:
color(colorstring):颜色字符串参数,如"green"
color((r,g,b)):RGB数值三元组,如纯蓝(0,0,1)
color(r,g,b)
当画笔及填充颜色不同:
color(colorstr1,colorstr2)
color((r1,g1,b1),(r2,g2,b2))
pencolor():返回或设置画笔颜色
pencolor(colorstring):颜色字符串参数,如"green"
pencolor((r,g,b)):RGB数值三元组,如纯蓝(0,0,1)
pencolor(r,g,b)
begin_fill():开始填充颜色
end_fill():结束填充颜色
运动控制函数:
forward()/fd():当前行进方向前进
backword()/bk():当前行进反方向前进
right()/rt():以当前行进角度为原点,行进方向向右旋转
left()/lt():以当前行进角度为原点,向左改变相对角度
setheading()/seth():设置画笔当前行进方向的角度(角度坐标体系中的绝对角度)
goto():将画笔移动到绝对位置,用来画线
**circle(radius,extent)**函数:参数radius取像素值、extent取角度的整数值,两参数均可取正负值
绘制大耳朵兔
原网址:
https://blog.csdn.net/lzqg1990/article/details/88092773
from turtle import *
speed(10)
#小兔的面部
color('pink')
pensize(5)
circle(radius=100)#脸
#眼睛
pencolor('black')
#左眼
pu()
goto(-45,92)
pd()
begin_fill() #填充颜色
color((0,0,0),(0,0,0.1))
circle(radius=15)
#右眼
pu()
goto(45,92)
pd()
circle(radius=15)
end_fill() #结束填充颜色
#鼻子
pu()
goto(20,60)
color('pink')
pd()
begin_fill()
goto(-20,60)
goto(0,45)
goto(20,60)
end_fill()
#嘴
goto(0,45)
goto(0,40)
seth(-90)
circle(10,120)
pu()
goto(0,40)
seth(-90)
pd()
circle(-10,120)
#小兔的耳朵
#左耳
pu()
goto(-60,180)#
seth(200)
pd()
circle(radius=350,extent=90)
goto(-98,110)
#右耳
pu()
goto(60,180)#
seth(-20)
pd()
circle(radius=-350,extent=90)
goto(98,110)
#小兔的身体
pu()
goto(20,3)
seth(-25)
pd()
circle(radius=-250,extent=25)
circle(radius=-135,extent=260)
seth(50)
circle(radius=-250,extent=25)
##小兔的胳膊
#左臂
pu()
seth(180)
goto(-30,-3)
pd()
#小短胳膊
##circle(radius=270,extent=20)
##circle(radius=20,extent=190)
circle(radius=248,extent=30)
circle(radius=29,extent=185)
#右臂
pu()
seth(0)
goto(30,-3)
pd()
circle(radius=-248,extent=30)
circle(radius=-27,extent=184)
##小兔的脚
##左脚
pu()
goto(-162,-260)#
pd()
seth(0)
circle(radius=41)
#右脚
pu()
goto(164,-260)
pd()
circle(radius=41)
done()
实例060:字符串长度
题目 计算字符串长度。
str_in = "abcd1234() "
print(len(str_in))
实例061:杨辉三角
题目 打印出杨辉三角形前十行。
杨辉三角:从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和
#使用列表计算每一行数字,输出其中不为0的部分,居中
import numpy as np
lines = 10
out = np.zeros((lines,lines))
for i in range(lines):
for j in range(i+1):
if j==0:
out[i][j]=1
else:
out[i][j]=out[i-1][j-1]+out[i-1][j]
print(out)
for i in range(lines):
for j in range(i+1):
print(int(out[i][j]),end=' ')
print()
实例062:查找字符串
题目 查找字符串。
str1 = 'abcdefg'
str2 = 'cde'
print(str1.find(str2))
实例063:画椭圆
题目 画椭圆。
#参考答案
if __name__ == '__main__':
from tkinter import *
x = 360
y = 160
top = y - 30
bottom = y - 30
canvas = Canvas(width = 400,height = 600,bg = 'white')
for i in range(20):
canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom)
top -= 5
bottom += 5
canvas.pack()
mainloop()
import numpy as np # 导入数据包主要处理数据
import matplotlib.pyplot as plt #导入图形包
x = y = np.arange(-4, 4, 0.1) #函数返回一个有终点和起点的固定步长的排列
x, y = np.meshgrid(x,y) #生成网格点坐标矩阵
plt.contour(x, y, 2*x**2 + y**2, [9])
plt.axis('scaled')
plt.show() # 展示出来
实例064:画椭圆、矩形
题目 利用ellipse 和 rectangle 画图。
if __name__ == '__main__':
from tkinter import *
canvas = Canvas(width = 400,height = 600,bg = 'white')
left = 20
right = 50
top = 50
num = 15
for i in range(num):
canvas.create_oval(250 - right,250 - left,250 + right,250 + left)
canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)
canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))
right += 5
left += 5
top += 10
canvas.pack()
mainloop()
实例065:画组合图形
题目 一个最优美的图案。
import math
from tkinter import *
class PTS:
def __init__(self):
self.x = 0
self.y = 0
points = []
def LineToDemo():
screenx = 400
screeny = 400
canvas = Canvas(width = screenx,height = screeny,bg = 'white')
AspectRatio = 0.85
MAXPTS = 15
h = screeny
w = screenx
xcenter = w / 2
ycenter = h / 2
radius = (h - 30) / (AspectRatio * 2) - 20
step = 360 / MAXPTS
angle = 0.0
for i in range(MAXPTS):
rads = angle * math.pi / 180.0
p = PTS()
p.x = xcenter + int(math.cos(rads) * radius)
p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
angle += step
points.append(p)
canvas.create_oval(xcenter - radius,ycenter - radius,
xcenter + radius,ycenter + radius)
for i in range(MAXPTS):
for j in range(i,MAXPTS):
canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
canvas.pack()
mainloop()
if __name__ == '__main__':
LineToDemo()
实例066:三数排序
题目 输入3个数a,b,c,按大小顺序输出。
str_num = input('请输入三个整数x,y,z:')
num = []
for i in str_num.split(','):
num.append(int(i))
print(sorted(num, reverse=True))
实例067:交换位置
题目 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
str_num = input('请输入数组:') #18,39,11,34,51,100,69,71,92,88,5,75
lists = []
for i in str_num.split(','):
lists.append(float(i))
maxindex = 0
minindex = 0
for i in range(len(lists)):
if lists[maxindex]<lists[i]:
maxindex = i
if lists[minindex]>lists[i]:
minindex= i
lists[maxindex],lists[0] = lists[0],lists[maxindex]
lists[minindex],lists[len(lists)-1] = lists[len(lists)-1],lists[minindex]
print(lists)
实例068:旋转数列
题目 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
nums = [18,39,11,34,51,100,69,71,92,88,5,75]
move = []
m = int(input("请输入数字m:"))
for i in range(m):
move.append(nums[len(nums)-m+i])
for i in range(len(nums)-m):
move.append(nums[i])
print(move)
实例069:报数
题目 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
n = int(input('请输入人数:'))
lines = list(range(1, n + 1)) # 将所有人放入一个数组
count = 0 #设置一个变量,用于计算报数
while len(lines) > 1: #当剩余人数大于1时进行循环
lines1 = lines[:] #把原数组拷贝到新数组中,用于限制内层循环次数
for i in range(0, len(lines1)): #内层循环开始,从第一个人开始报数
count = count + 1 #每报一次,count计数器加1
if count % 3 == 0: #如果count能被3整除,则是报到3的人
lines.remove(lines1[i]) #把报到3的人移除原数组,进行下一次循环
print('最后留下的是原来的第 {} 号'.format(lines1[0]))
实例070:字符串长度II
题目 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
def length(str_in):
return len(str_in)
if __name__ == '__main__':
lengths = length("abcd1234")
print(lengths)
实例071:输入和输出
题目 编写input()和output()函数输入,输出5个学生的数据记录。
student = []
for i in range(5):
student.append(['','',[]])
def input_stu(stu):
for i in range(5):
stu[i][0] = input('input student num:\n')
stu[i][1] = input('input student name:\n')
for j in range(3):
stu[i][2].append(int(input('score:\n')))
def output_stu(stu):
for i in range(5):
print ('%-6s%-10s' % ( stu[i][0],stu[i][1] )) #%10s——右对齐,占位符10位,%-10s——左对齐,占位符10位
for j in range(3):
print ('%-8d' % stu[i][2][j])
if __name__ == '__main__':
input_stu(student)
print (student)
output_stu(student)
实例072:创建链表
题目 创建一个链表。
链表:是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列。也就是说,结点包含两部分信息:一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域。链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点。链表中的最后一个结点没有后继元素,其指针域为空。
插入结点的时候,需要将前一个节结点的指针指向插入结点的地址,将插入结点的指针指向下一结点;删除结点的时候,需要将前一个结点的指针指向下一个结点的地址。
#创建结点
class Node(object):
def __init__(self, item):
#节点有两个属性,信息域和指针域
self.item = item
self.next = None
#单链表
class SingleLinkList(object):
#初始化
def __init__(self, node=None, *args, **kwargs):
if node is None:
self.__head = node
else:
self.__head = Node(node)
for arg in args:
self.append(arg)
if kwargs.values() is not None:
for kwarg in kwargs:
self.append(kwargs[kwarg])
def is_empty(self):
"""链表是否为空
:return 如果链表为空 返回真
"""
if self.__head is None:
print("链表为空!")
return True
else:
return False
def length(self):
"""链表长度"""
cur = self.__head
count = 0
while cur is not None:
count += 1
cur = cur.next
print("链表长度:",count)
return count
def travel(self):
"""遍历整个链表"""
cur = self.__head
print('链表元素:',end=' ')
while cur is not None:
print(cur.item, end=" ")
cur = cur.next
print("")
def add(self, item):
"""链表头部添加元素
:param item: 要保存的具体数据
"""
node = Node(item)
node.next = self.__head
self.__head = node
def append(self, item):
"""链表尾部添加元素"""
node = Node(item)
# 如果链表为空,需要特殊处理
if self.is_empty():
self.__head = node
else:
cur = self.__head
while cur.next is not None:
cur = cur.next
# 退出循环的时候,cur指向的尾结点
cur.next = node
def insert(self, pos, item):
"""指定位置添加元素"""
# 在头部添加元素
if pos <= 0:
self.add(item)
# 在尾部添加元素
elif pos >= self.length():
self.append(item)
else:
cur = self.__head
count = 0
while count < (pos - 1):
count += 1
cur = cur.next
# 退出循环的时候,cur指向pos的前一个位置
node = Node(item)
node.next = cur.next
cur.next = node
def remove(self, item):
"""删除节点"""
cur = self.__head
pre = None
while cur is not None:
# 找到了要删除的元素
if cur.item == item:
# 在头部找到了元素
if cur == self.__head:
self.__head = cur.next
else:
pre.next = cur.next
return
# 不是要找的元素,移动游标
pre = cur
cur = cur.next
def search(self, item):
"""查找节点是否存在"""
cur = self.__head
while cur is not None:
if cur.item == item:
print(item,'在链表中')
return True
cur = cur.next
print(item,'不在链表中')
return False
def reveres(self):
"""反转元素节点"""
if self.is_empty() or self.length() <= 1:
return
j = 0
while j < self.length()-1:
cur = self.__head
for i in range(self.length() - 1):
cur = cur.next
if cur.next is None:
x = cur.item
self.remove(cur.item)
self.insert(j, x)
j += 1
sll = SingleLinkList()
sll.is_empty()
sll.length()
sll.add(1)
sll.add(2)
sll.add(3)
sll.append(4)
sll.append(5)
sll.append(6)
sll.insert(0, 9)
sll.travel()
sll.search(4)
sll.length()
实例073:反向输出链表
题目 反向输出一个链表。
#续上
sll.reveres()
sll.travel()
实例074:列表排序、连接
题目 列表排序及连接。
if __name__ == "__main__":
a = [1, 3, 2]
b = [5, 4, 6]
#列表排序
a.sort() #sort在原列表上进行修改
print(a)
print(sorted(b))
#列表连接方法:
print(a+b)
a.extend(b)
print(a)
实例075:计算
题目 下面程序的输出是多少?
if __name__ == '__main__':
for i in range(5):
n = 0
if i != 1: n += 1
if i == 3: n += 1
if i == 4: n += 1
if i != 4: n += 1
if n == 3: print (64 + i)
实例076:计算
题目 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
def judge(n):
if n % 2==0:
sum = even(n)
else:
sum = odd(n)
return sum
def odd(n): #奇数
sum = 0
for i in range(0, int(n/2)+1):
sum += 1.0/(2*i+1)
return sum
def even(n): #偶数
sum = 0
for i in range(1, int(n/2)+1):
sum += 1.0/(2*i)
return sum
if __name__=="__main__":
n = int(input("请输入一个整数:"))
print(judge(n))
实例077:遍历列表
题目 循环输出列表
l = ['a', 'b', 'c', 'd']
for i in l:
print(i)
实例078:字典
题目 找到年龄最大的人,并输出。请找出程序中有什么问题。
if __name__ == '__main__':
person = {"li":18,"wang":50,"zhang":20,"sun":22}
m = 'li'
for key in person.keys():
if person[m] < person[key]:
m = key
print('%s,%d' % (m,person[m]))
实例079:字符串排序
题目 字符串排序。
l=['baaa','aaab','aaba','aaaa','abaa']
l.sort()
print('sort',l)
l=['baaa','aaab','aaba','aaaa','abaa']
print('sorted', sorted(l))
print(l)
实例080:猴子分桃
题目 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
分析:按桃子来说,总数为x,则第一只猴子的数量为(x-1)/5,剩余的为4/5*(x-1),将剩余的数量作为总数再继续分
for x in range(10000):
k = 0
y = x
while k!=5:
if (y-1)%5==0:
k += 1
else:
k = 0
break
y = 4/5*(y-1)
if k==5:
print(x)
break
分析:第 n+1 猴子拿到桃子的数量为 m ,则第 n 只拿到的数量为 5/4*m+1 ,第 n 只拿完还剩余 5*m+1
重点在于必须保证前四只猴子拿到的数量可以整除4
if __name__ == '__main__':
i = 0 #5只猴子
j = 1 #第5只猴子桃子的数量
x = 0 #猴子桃子的数量
while (i < 5) :
x = 4 * j
for i in range(0,5):
if(x%4 != 0) :
break
else :
i += 1
x = (x/4) * 5 +1
j += 1
print("共有桃子:", x)
for p in range(1,6):
print('第%d只猴子拿到的桃子数量为:'%(p),(x-1)/5)
#print('第%d只猴子拿完剩余的桃子数量为:'%(p), (x-1)/5*4+1)
x=(x-1)/5*4
实例081:求未知数
题目 809 * ??=800 * ??+9 * ?? 其中??代表的两位数, 809 * ??为四位数,8 * ??的结果为两位数,9 * ??的结果为3位数。求 ?? 代表的两位数,及809 * ??后的结果。
for i in range(10, 100):
if 8*i in range(10,100):
if 9*i in range(100, 1000):
print(i)
print(809*12)
实例082:进制转换
题目 将八进制转换为十进制
n=int('0o'+str(int(input('八进制输入:'))),8)
print(n)
实例083:奇数
题目 求0—7所能组成的奇数个数。
0-7只能且必须出现一次:
4 * 6 * 6 !,最低位:4个,最高位不能取0:6个,中间6个数的全排列
from functools import reduce
print('能组成{}个奇数'.format(4*6*reduce(lambda x,y:x*y,range(2,7))))
0-7只能出现一次的情况,但不必全出现:
组成1位数是4个,1,3,5,7结尾,组成2位数是 6 * 4个,第一位不能为0,组成3位数到8位数的是4 * 6 * 6! / (6-m)!,m表示位数
n = 4 + 4*6 + 4*6*sum([reduce(lambda x,y:x*y, range(7-m,7)) for m in range(1,7)])
print('能组成{}个奇数'.format(n))
计算的是0-7位数,0-7可以重复的情况:
组成1位数是4个,1,3,5,7结尾,组成2位数是 7 * 4个,第一位不能为0,组成3位数是7 * 8 * 4个,中间随意,组成4位数是 7 * 8 * 8 * 4个,……
if __name__ == '__main__':
sum = 4
s = 4
for j in range(2,9):
print(sum)
if j <= 2:
s *= 7
else:
s *= 8
sum += s
print('sum = %d' % sum)
实例084:字符串连接
题目 连接字符串。
mylist = ['Brazil', 'Russia', 'India', 'China']
print(','.join(mylist))
实例085:整除
题目 输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。
if __name__ == '__main__':
num = int(input('请输入一个奇数:'))
divisor = 9
while divisor%num!=0:
divisor = divisor*10+9
print('%d 可以被 %d 整除'%(num, divisor))
print('至少 %d 个 9 整除 %d 的结果为整数'%(len(str(divisor)), num))
实例086:连接字符串
题目 字符串连接
a='haha'
b='hehe'
print(b+a)
实例087:回答结果
题目 结构体变量传递
if __name__ == '__main__':
class student:
x = 0
c = 0
def f(stu):
stu.x = 20
stu.c = 'c'
a= student()
a.x = 3
a.c = 'a'
f(a)
print(a.x, a.c)
实例088:打印星号
题目 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
if __name__ == '__main__':
n = 1
while n <= 7:
a = int(input('请输入一个1-50之间的整数值:'))
while a < 1 or a > 50:
a = int(input('请重新输入1-50的整数值'))
print(a * '*')
n += 1
实例089:数据加密
题目 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
num = input('请输入一个四位的整数:')
a = []
for i in num:
a.append((int(i) + 5) % 10)
a[2], a[1] = a[1], a[2]
a[3], a[0] = a[0], a[3]
print ("".join('%s' %s for s in a))
实例090:列表
题目 列表使用实例。
#新建列表
testList=[10086,'中国移动',[1,2,4,5]]
#访问列表长度
print (len(testList))
#到列表结尾
print (testList[1:])
#向列表添加元素
testList.append('i\'m new here!')
print (testList)
print (len(testList))
print (testList[-1])
#弹出列表的位置为1的一个元素
print (testList.pop(1))
print (len(testList))
print (testList)
#list comprehension
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print (matrix)
print (matrix[1])
col2 = [row[1] for row in matrix] #get a column from a matrix
print (col2)
col2even = [row[1] for row in matrix if row[1] % 2 == 0] #filter odd item
print (col2even)
实例091:time模块1
题目 时间函数
import time
print (time.time()) #返回当前时间的时间戳(1970纪元后经过的浮点秒数)
print (time.ctime(time.time())) #把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。
print (time.asctime(time.localtime(time.time())))
print (time.asctime(time.gmtime(time.time()))) #将一个时间戳转换为UTC时区(0时区)
实例092:time模块2
题目 时间函数
import time
start = time.time() #系统时钟的时间戳,两次调用的时间差即为系统经过的总时间。
for i in range(1000000):
#print(i)
pass
end = time.time()
print('%.10f' % (end - start))
实例093:time模块3
题目 时间函数
import time
#time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
start = time.process_time() #time.clock:统计cpu时间的工具,两次调用的差值即为程序运行的cpu时间。
for i in range(1000000):
#print(i)
pass
end = time.process_time()
print('%.10f' % (end - start))
实例094:time模块应用
题目 一个猜数游戏,判断一个人反应快慢。
if __name__ == '__main__':
import time
import random
play_it = input('Do you want to play it.(\'y\' or \'n\')')
while play_it == 'y':
c = input('input a character:\n')
i = random.randint(0,2**32) % 100
print ('please input number you guess:\n')
start = time.process_time()
a = time.time()
guess = int(input('input your guess:\n'))
while guess != i:
if guess > i:
print('please input a little smaller')
guess = int(input('input your guess:\n'))
else:
print('please input a little bigger')
guess = int(input('input your guess:\n'))
end = time.process_time()
b = time.time()
var = (end - start) / 18.2
print (var)
print ('It took you %6.3f seconds' % (b-a))
if var < 15:
print ('you are very clever!')
elif var < 25:
print ('you are normal!')
else:
print ('you are stupid!')
print ('Congradulations')
print ('The number you guess is %d' % i)
play_it = input('do you want to play it.')
实例095:time模块4
题目 字符串日期转换为易读的日期格式。
from dateutil import parser
dt = parser.parse("Aug 28 2015 12:00AM")
print (dt)
实例096:计算重复次数
题目 计算字符串中子串出现的次数。
s1='he1he2he3he4hahahahahe5he6he7he8'
s2='he'
print(s1.count(s2))
实例097:磁盘写入1
题目 从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。
from sys import stdout
filename = input('输入文件名:\n')
fp = open(filename,"w")
ch = input('输入字符串:\n')
while ch != '#':
fp.write(ch)
stdout.write(ch)
ch = input('')
fp.close()
#stdout.write:关键就在于使用'\r'这个转义字符(回到行首), sys.stdout.write首先打印这一行后不带任何结尾
#使用了转移字符"\r"使得光标回到行首,再把缓冲区显示出来,就得到了我们所需要的效果。
from datetime import datetime as dt
import sys
import time
while True:
a = dt.now()
sys.stdout.write("\r{0}".format(a))
sys.stdout.flush()
time.sleep(1)
#只会显示这一个,并且一秒钟更新一次,可以用于显示进度条
实例098:磁盘写入2
题目 从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。
if __name__ == '__main__':
fp = open('test.txt','w')
string = input('please input a string:\n')
string = string.upper()
fp.write(string)
fp = open('test.txt','r')
print (fp.read())
fp.close()
实例099:磁盘写入3
题目 有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。
if __name__ == '__main__':
import string
fp = open('test1.txt')
a = fp.read()
fp.close()
fp = open('test2.txt')
b = fp.read()
fp.close()
fp = open('test3.txt','w')
l = list(a + b)
l.sort()
s = ''
s = s.join(l)
fp.write(s)
fp.close()
实例100:列表转字典
题目 列表转换为字典
i = ['a', 'b']
l = [1, 2]
print (dict(zip(i,l)))