python100例

快 速 入 门 : p y t h o n 100 例 快速入门:python100例 快速入门:python100例

原题地址:python100例
参考:快速入门(完整):Python实例100个(基于最新Python3.7版本)

对部分案例进行修改和扩展,想起啥写啥!

实例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)))
上一篇:Linux查看硬件信息很Easy


下一篇:数据库文件过大如何收缩