当前位置:   article > 正文

【转载】快速入门(完整):Python实例100个(基于最新Python3.7版本)_青少年python编程300例

青少年python编程300例

原题地址:
http://www.runoob.com/python/python-100-examples.html
git地址:
https://github.com/RichardFu123/Python100Cases
转载请标注:
https://blog.csdn.net/weixin_41084236/article/details/81564963
原例为Python2.7版本
重写过程中有不少是随意发挥的
重写运行版本:Python3.7
作者:Shawn
————————————————
文章目录
Python3 100例
实例001:数字组合
实例002:“个税计算”
实例003:完全平方数
实例004:这天第几天
实例005:三数排序
实例006:斐波那契数列
实例007:copy
实例008:九九乘法表
实例009:暂停一秒输出
实例010:给人看的时间
实例011:养兔子
实例012:100到200的素数
实例013:所有水仙花数
实例014:分解质因数
实例015:分数归档
实例016:输出日期
实例017:字符串构成
实例018:复读机相加
实例019:完数
实例020:高空抛物
实例021:猴子偷桃
实例022:比赛对手
实例023:画菱形
实例024:斐波那契数列II
实例025: 阶乘求和
实例026:递归求阶乘
实例027:递归输出
实例028:递归求等差数列
实例029:反向输出
实例030:回文数
实例031:字母识词
实例032:反向输出II
实例033:列表转字符串
实例034:调用函数
实例035:设置输出颜色
实例036:算素数
实例037:排序
实例038:矩阵对角线之和
实例039:有序列表插入元素
实例040:逆序列表
实例041:类的方法与变量
实例042:变量作用域
实例043:作用域、类的方法与变量
实例044:矩阵相加
实例045:求和
实例046:打破循环
实例047:函数交换变量
实例048:数字比大小
实例049:lambda
实例050:随机数
实例051:按位与
实例052:按位或
实例053:按位异或
实例054:位取反、位移动
实例055:按位取反
实例056:画圈
实例057:画线
实例058:画矩形
实例059:画图(丑)
实例060:字符串长度
实例061:杨辉三角
实例062:查找字符串
实例063:画椭圆
实例064:画椭圆、矩形
实例065:画组合图形
实例066:三数排序
实例067:交换位置
实例068:旋转数列
实例069:报数
实例070:字符串长度II
实例071:输入和输出
实例072:创建链表
实例073:反向输出链表
实例074:列表排序、连接
实例075:不知所云
实例076:做函数
实例077:遍历列表
实例078:字典
实例079:字符串排序
实例080:猴子分桃
实例081:求未知数
实例082:八进制转十进制
实例083:制作奇数
实例084:连接字符串
实例085:整除
实例086:连接字符串II
实例087:访问类成员
实例088:打印星号
实例089:解码
实例090:列表详解
实例091:time模块
实例092:time模块II
实例093:time模块III
实例094:time模块IV
实例095:转换时间格式
实例096:计算复读次数
实例097:磁盘写入
实例098:磁盘写入II
实例099:磁盘读写
实例100:列表转字典
实例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(j!=k)and(k!=i)):
                print(i,j,k)
                total+=1
print(total)
1
2
3
4
5
6
7
8
简便方法 用itertools中的permutations即可。

import itertools
sum2=0
a=[1,2,3,4]
for i in itertools.permutations(a,3):
    print(i)
    sum2+=1
print(sum2)

1
2
3
4
5
6
7
8
实例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,求应发放奖金总数?

程序分析 分区间计算即可。

profit=int(input('Show me the money: '))
bonus=0
thresholds=[100000,100000,200000,200000,400000]
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
实例003:完全平方数
题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:

n=0
while (n+1)**2-n*n<=168:
    n+=1

print(n+1)
----------

85

1
2
3
4
5
6
7
8
9
思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。
至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。
结合起来:

n=0
while (n+1)**2-n*n<=168:
    n+=1

for i in range((n+1)**2):
    if i**0.5==int(i**0.5) and (i+168)**0.5==int((i+168)**0.5):
        print(i-100)
1
2
3
4
5
6
7
实例004:这天第几天
题目 输入某年某月某日,判断这一天是这一年的第几天?

程序分析 特殊情况,闰年时需考虑二月多加一天:

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)

1
2
3
4
5
6
7
8
9
10
11
12
13
实例005:三数排序
题目 输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析 练练手就随便找个排序算法实现一下,偷懒就直接调函数。

raw=[]
for i in range(3):
    x=int(input('int%d: '%(i)))
    raw.append(x)
    
for i in range(len(raw)):
    for j in range(i,len(raw)):
        if raw[i]>raw[j]:
            raw[i],raw[j]=raw[j],raw[i]
print(raw)


raw2=[]
for i in range(3):
    x=int(input('int%d: '%(i)))
    raw2.append(x)
print(sorted(raw2))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
实例006:斐波那契数列
题目 斐波那契数列。

程序分析 斐波那契数列(Fibonacci sequence),从1,1开始,后面每一项等于前面两项之和。图方便就递归实现,图性能就用循环。

# 递归实现
def Fib(n):
    return 1 if n<=2 else Fib(n-1)+Fib(n-2)
print(Fib(int(input())))
    
# 朴素实现
target=int(input())
res=0
a,b=1,1
for i in range(target-1):
    a,b=b,a+b
print(a)

1
2
3
4
5
6
7
8
9
10
11
12
13
实例007:copy
题目 将一个列表的数据复制到另一个列表中。

程序分析 使用列表[:],拿不准可以调用copy模块。

import copy
a = [1,2,3,4,['a','b']]

b = a                    # 赋值
c = a[:]                # 浅拷贝
d = copy.copy(a)        # 浅拷贝
e = copy.deepcopy(a)    # 深拷贝

a.append(5)
a[4].append('c')

print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)

============ RESTART: F:\PyWorkspace\Python100\100examples\007.py ============
a= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c= [1, 2, 3, 4, ['a', 'b', 'c']]
d= [1, 2, 3, 4, ['a', 'b', 'c']]
e= [1, 2, 3, 4, ['a', 'b']]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
实例008:九九乘法表
题目 输出 9*9 乘法口诀表。

程序分析 分行与列考虑,共9行9列,i控制行,j控制列。

for i in range(1,10):
    for j in range(1,i+1):
        print('%d*%d=%2ld '%(i,j,i*j),end='')
    print()
1
2
3
4
实例009:暂停一秒输出
题目 暂停一秒输出。

程序分析 使用 time 模块的 sleep() 函数。

import time
for i in range(4):
    print(str(int(time.time()))[-2:])
    time.sleep(1)
1
2
3
4
实例010:给人看的时间
题目 暂停一秒输出,并格式化当前时间。

程序分析 同009.

import time

for i in range(4):
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
    time.sleep(1)
1
2
3
4
5
实例011:养兔子
题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析 我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。

month=int(input('繁殖几个月?: '))
month_1=1
month_2=0
month_3=0
month_elder=0
for i in range(month):
    month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3
    print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子')
    print('其中1月兔:',month_1)
    print('其中2月兔:',month_2)
    print('其中3月兔:',month_3)
    print('其中成年兔:',month_elder)
1
2
3
4
5
6
7
8
9
10
11
12
实例012:100到200的素数
题目 判断101-200之间有多少个素数,并输出所有素数。

程序分析 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 用else可以进一步简化代码.

import math
for i in range(100,200):
    flag=0
    for j in range(2,round(math.sqrt(i))+1):
        if i%j==0:
            flag=1
            break
    if flag:
        continue
    print(i)


print('\nSimplify the code with "else"\n')


for i in range(100,200):
    for j in range(2,round(math.sqrt(i))+1):
        if i%j==0:
            break
    else:
        print(i)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
实例013:所有水仙花数
题目 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析 利用for循环控制100-999个数,每个数分解出个位,十位,百位。

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)
1
2
3
4
5
6
7
实例014:分解质因数
题目 将一个整数分解质因数。例如:输入90,打印出90=233*5。

程序分析 根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。

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
        
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
实例015:分数归档
题目 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

程序分析 用条件判断即可。

points=int(input('输入分数:'))
if points>=90:
    grade='A'
elif points<60:
    grade='C'
else:
    grade='B'
print(grade)
1
2
3
4
5
6
7
8
实例016:输出日期
题目 输出指定格式的日期。

程序分析 使用 datetime 模块。

import datetime
print(datetime.date.today())
print(datetime.date(2333,2,3))
print(datetime.date.today().strftime('%d/%m/%Y'))
day=datetime.date(1111,2,3)
day=day.replace(year=day.year+22)
print(day)
1
2
3
4
5
6
7
实例017:字符串构成
题目 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析 利用 while 或 for 语句,条件为输入的字符不为 ‘\n’。

string=input("输入字符串:")
alp=0
num=0
spa=0
oth=0
for i in range(len(string)):
    if string[i].isspace():
        spa+=1
    elif string[i].isdigit():
        num+=1
    elif string[i].isalpha():
        alp+=1
    else:
        oth+=1
print('space: ',spa)
print('digit: ',num)
print('alpha: ',alp)
print('other: ',oth)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
实例018:复读机相加
题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

程序分析 用字符串解决。

a=input('被加数字:')
n=int(input('加几次?:'))
res=0
for i in range(n):
    res+=int(a)
    a+=a[0]
print('结果是:',res)
1
2
3
4
5
6
7
实例019:完数
题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

程序分析 将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其本身。

def factor(num):
    target=int(num)
    res=set()
    for i in range(1,num):
        if num%i==0:
            res.add(i)
            res.add(num/i)
    return res

for i in range(2,1001):
    if i==sum(factor(i))-i:
        print(i)
1
2
3
4
5
6
7
8
9
10
11
12
实例020:高空抛物
题目 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

程序分析 无

high=200.
total=100
for i in range(10):
    high/=2
    total+=high
    print(high/2)
print('总长:',total)
1
2
3
4
5
6
7
实例021:猴子偷桃
题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

程序分析 按规则反向推断:猴子有一个桃子,他偷来一个桃子,觉得不够又偷来了与手上等量的桃子,一共偷了9天。

peach=1
for i in range(9):
    peach=(peach+1)*2
print(peach)
1
2
3
4
实例022:比赛对手
题目 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

程序分析 找到条件下不重复的三个对手即可。

a=set(['x','y','z'])
b=set(['x','y','z'])
c=set(['x','y','z'])
c-=set(('x','z'))
a-=set('x')
for i in a:
    for j in b:
        for k in c:
            if len(set((i,j,k)))==3:
                print('a:%s,b:%s,c:%s'%(i,j,k))
1
2
3
4
5
6
7
8
9
10
实例023:画菱形
题目 打印出如下图案(菱形):

    *
   ***
  *****
 *******
  *****
   ***
    *

程序分析 递归调用即可。

def draw(num):
    a="*"*(2*(4-num)+1)
    print(a.center(9,' '))
    if num!=1:
        draw(num-1)
        print(a.center(9,' '))
draw(4)
1
2
3
4
5
6
7
实例024:斐波那契数列II
题目 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

程序分析 就是斐波那契数列的后一项除以前一项。

a = 2.0
b = 1.0
s = 0
for n in range(1,21):
    s += a / b
    a,b = a + b,a
print (s)

1
2
3
4
5
6
7
8
实例025: 阶乘求和
题目 求1+2!+3!+…+20!的和。

程序分析 1+2!+3!+…+20!=1+2(1+3(1+4(…20(1))))

res=1
for i in range(20,1,-1):
    res=i*res+1
print(res)
1
2
3
4
实例026:递归求阶乘
题目 利用递归方法求5!。

程序分析 递归调用即可。

def factorial(n):
    return n*factorial(n-1) if n>1 else 1
print(factorial(5))
1
2
3
实例027:递归输出
题目 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

程序分析 递归真是蠢方法。

def rec(string):
    if len(string)!=1:
        rec(string[1:])
    print(string[0],end='')

rec(input('string here:'))
1
2
3
4
5
6
实例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))
1
2
3
4
5
实例029:反向输出
题目 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析 学会分解出每一位数,用字符串的方法总是比较省事。

n=int(input('输入一个正整数:'))
n=str(n)
print('%d位数'%len(n))
print(n[::-1])
1
2
3
4
实例030:回文数
题目 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析 用字符串比较方便,就算输入的不是数字都ok。

n=input("随便你输入啥啦:")
a=0
b=len(n)-1
flag=True
while a<b:
    if n[a]!=n[b]:
        print('不是回文串')
        flag=False
        break
    a,b=a+1,b-1
if flag:
    print('是回文串')
1
2
3
4
5
6
7
8
9
10
11
12
实例031:字母识词
题目 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析 这里用字典的形式直接将对照关系存好。

weekT={'h':'thursday',
       'u':'tuesday'}
weekS={'a':'saturday',
       'u':'sunday'}
week={'t':weekT,
      's':weekS,
      'm':'monday',
      'w':'wensday',
      'f':'friday'}
a=week[str(input('请输入第一位字母:')).lower()]
if a==weekT or a==weekS:
    print(a[str(input('请输入第二位字母:')).lower()])
else:
    print(a)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
实例032:反向输出II
题目 按相反的顺序输出列表的值。

程序分析 无。

a = ['one', 'two', 'three']
print(a[::-1])
1
2
实例033:列表转字符串
题目 按逗号分隔列表。

程序分析 无。

L = [1,2,3,4,5]
print(','.join(str(n) for n in L))
1
2
实例034:调用函数
题目 练习函数调用。

程序分析 无。

def hello():
    print('Hello World!')
def helloAgain():
    for i in range(2):
        hello()

if __name__=='__main__':
    helloAgain()
1
2
3
4
5
6
7
8
实例035:设置输出颜色
题目 文本颜色设置。

程序分析 无。

class bcolors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'
print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)
1
2
3
4
5
6
7
8
9
10
实例036:算素数
题目 求100之内的素数。

程序分析 用else执行for循环的奖励代码(如果for是正常完结,非break)。

lo=int(input('下限:'))
hi=int(input('上限:'))
for i in range(lo,hi+1):
    if i > 1:
        for j in range(2,i):
            if (i % j) == 0:
                break
        else:
            print(i)
1
2
3
4
5
6
7
8
9
实例037:排序
题目 对10个数进行排序。

程序分析 同实例005。

raw=[]
for i in range(10):
    x=int(input('int%d: '%(i)))
    raw.append(x)
    
for i in range(len(raw)):
    for j in range(i,len(raw)):
        if raw[i]>raw[j]:
            raw[i],raw[j]=raw[j],raw[i]
print(raw)

1
2
3
4
5
6
7
8
9
10
11
实例038:矩阵对角线之和
题目 求一个3*3矩阵主对角线元素之和。

程序分析 无。

mat=[[1,2,3],
     [3,4,5],
     [4,5,6]
    ]
res=0
for i in range(len(mat)):
    res+=mat[i][i]
print(res)
1
2
3
4
5
6
7
8
实例039:有序列表插入元素
题目 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析 首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

lis=[1,10,100,1000,10000,100000]
n=int(input('insert a number: '))
lis.append(n)
for i in range(len(lis)-1):
    if lis[i]>=n:
        for j in range(i,len(lis)):
            lis[j],lis[-1]=lis[-1],lis[j]
        break
print(lis)
1
2
3
4
5
6
7
8
9
实例040:逆序列表
题目 将一个数组逆序输出。

程序分析 依次交换位置,或者直接调用reverse方法。

lis=[1,10,100,1000,10000,100000]
for i in range(int(len(lis)/2)):
    lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i]
print('第一种实现:')
print(lis)


lis=[1,10,100,1000,10000,100000]
print('第二种实现:')
lis.reverse()
print(lis)

1
2
3
4
5
6
7
8
9
10
11
12
实例041:类的方法与变量
题目 模仿静态变量的用法。

程序分析 构造类,了解类的方法与变量。

def dummy():
    i=0
    print(i)
    i+=1

class cls:
    i=0
    def dummy(self):
        print(self.i)
        self.i+=1

a=cls()
for i in range(50):
    dummy()
    a.dummy()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
实例042:变量作用域
题目 学习使用auto定义变量的用法。

程序分析 python中的变量作用域。

i=0
n=0
def dummy():
    i=0
    print(i)
    i+=1
def dummy2():
    global n
    print(n)
    n+=1
print('函数内部的同名变量')
for j in range(20):
    print(i)
    dummy()
    i+=1
print('global声明同名变量')
for k in range(20):
    print(n)
    dummy2()
    n+=10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
实例043:作用域、类的方法与变量
题目 模仿静态变量(static)另一案例。

程序分析 综合实例041和实例042。

class dummy:
    num=1
    def Num(self):
        print('class dummy num:',self.num)
        print('global num: ',num)
        self.num+=1

n=dummy()
num=1
for i in range(5):
    num*=10
    n.Num()
1
2
3
4
5
6
7
8
9
10
11
12
实例044:矩阵相加
题目 计算两个矩阵相加。

程序分析 创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。

X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
 
Y = [[5,8,1],
    [6,7,3],
    [4,5,9]]
 
res=[[0,0,0],
    [0,0,0],
    [0,0,0]]
for i in range(len(res)):
    for j in range(len(res[0])):
        res[i][j]=X[i][j]+Y[i][j]
print(res)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
实例045:求和
题目 统计 1 到 100 之和。

程序分析 无

res=0
for i in range(1,101):
    res+=i
print(res)
1
2
3
4
实例046:打破循环
题目 求输入数字的平方,如果平方运算后小于 50 则退出。

程序分析 无

while True:
    try:
        n=float(input('输入一个数字:'))
    except:
        print('输入错误')
        continue
    dn=n**2
    print('其平方为:',dn)
    if dn<50:
        print('平方小于50,退出')
        break
1
2
3
4
5
6
7
8
9
10
11
实例047:函数交换变量
题目 两个变量值用函数互换。

程序分析 无

def exc(a,b):
    return (b,a)
a=0
b=10
a,b=exc(a,b)
print(a,b)
1
2
3
4
5
6
实例048:数字比大小
题目 数字比较。

程序分析 无

a=int(input('a='))
b=int(input('b='))
if a<b:
    print('a<b')
elif a>b:
    print('a>b')
else:
    print('a=b')
1
2
3
4
5
6
7
8
实例049:lambda
题目 使用lambda来创建匿名函数。

程序分析 无

Max=lambda x,y:x*(x>=y)+y*(y>x)
Min=lambda x,y:x*(x<=y)+y*(y<x)

a=int(input('1:'))
b=int(input('2:'))

print(Max(a,b))
print(Min(a,b))
1
2
3
4
5
6
7
8
实例050:随机数
题目 输出一个随机数。

程序分析 使用 random 模块。

import random
print(random.uniform(10,20))
1
2
实例051:按位与
题目 学习使用按位与 & 。

程序分析 0&0=0; 0&1=0; 1&0=0; 1&1=1。

a=0o77
print(a)
b=a&3
print(b)
b=b&7
print(b)
1
2
3
4
5
6
实例052:按位或
题目 学习使用按位或 | 。

程序分析 0|0=0; 0|1=1; 1|0=1; 1|1=1

a=0o77
print(a|3)
print(a|3|7)
1
2
3
实例053:按位异或
题目 学习使用按位异或 ^ 。

程序分析 0^0=0; 0^1=1; 1^0=1; 1^1=0

a=0o77
print(a^3)
print(a^3^7)
1
2
3
实例054:位取反、位移动
题目 取一个整数a从右端开始的4〜7位。

程序分析 可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用(0<<4)
(3)将上面二者进行&运算。

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))
1
2
3
4
5
6
7
8
9
10
11
实例055:按位取反
题目 学习使用按位取反~。

程序分析 ~0=1; ~1=0;

print(~234)
print(~~234)
1
2
实例056:画圈
题目 画图,学用circle画圆形。

程序分析 无。

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()
1
2
3
4
5
6
7
8
9
10
实例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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
实例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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
实例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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
实例060:字符串长度
题目 计算字符串长度。

程序分析 无。

s='zhangguang101'
print(len(s))
1
2
实例061:杨辉三角
题目 打印出杨辉三角形前十行。

程序分析 无。

def generate(numRows):
    r = [[1]]
    for i in range(1,numRows):
        r.append(list(map(lambda x,y:x+y, [0]+r[-1],r[-1]+[0])))
    return r[:numRows]
a=generate(10)
for i in a:
    print(i)
1
2
3
4
5
6
7
8
实例062:查找字符串
题目 查找字符串。

程序分析 无。

s1='aabbxuebixuebi'
s2='ab'
s3='xue'
print(s1.find(s2))
print(s1.find(s3))
1
2
3
4
5
实例063:画椭圆
题目 画椭圆。

程序分析 使用 tkinter。

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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
实例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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
实例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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
实例066:三数排序
题目 输入3个数a,b,c,按大小顺序输出。

程序分析 同实例005。

raw=[]
for i in range(3):
    x=int(input('int%d: '%(i)))
    raw.append(x)
    
for i in range(len(raw)):
    for j in range(i,len(raw)):
        if raw[i]>raw[j]:
            raw[i],raw[j]=raw[j],raw[i]
print(raw)


raw2=[]
for i in range(3):
    x=int(input('int%d: '%(i)))
    raw2.append(x)
print(sorted(raw2))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
实例067:交换位置
题目 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

程序分析 无。

li=[3,2,5,7,8,1,5]

li[-1],li[li.index(min(li))]=li[li.index(min(li))],li[-1]

m=li[0]
ind=li.index(max(li))
li[0]=li[ind]
li[ind]=m

print(li)
1
2
3
4
5
6
7
8
9
10
实例068:旋转数列
题目 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

程序分析 无。

from collections import *
li=[1,2,3,4,5,6,7,8,9]
deq=deque(li,maxlen=len(li))
print(li)
deq.rotate(int(input('rotate:')))
print(list(deq))
1
2
3
4
5
6
实例069:报数
题目 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

程序分析 无。

if __name__ == '__main__':
    nmax = 50
    n = int(input('请输入总人数:'))
    num = []
    for i in range(n):
        num.append(i + 1)
 
    i = 0
    k = 0
    m = 0
 
    while m < n - 1:
        if num[i] != 0 : k += 1
        if k == 3:
            num[i] = 0
            k = 0
            m += 1
        i += 1
        if i == n : i = 0
 
    i = 0
    while num[i] == 0: i += 1
    print(num[i])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
实例070:字符串长度II
题目 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

程序分析 无。

def lenofstr(s):
    return len(s)

print(lenofstr('tanxiaofengsheng'))
1
2
3
4
实例071:输入和输出
题目 编写input()和output()函数输入,输出5个学生的数据记录。

程序分析 无。

N = 3
#stu
# num : string
# name : string
# score[4]: list
student = []
for i in range(5):
    student.append(['','',[]])
 
def input_stu(stu):
    for i in range(N):
        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(N):
        print ('%-6s%-10s' % ( stu[i][0],stu[i][1] ))
        for j in range(3):
            print ('%-8d' % stu[i][2][j])
 
if __name__ == '__main__':
    input_stu(student)
    print (student)
    output_stu(student)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
实例072:创建链表
题目 创建一个链表。

程序分析 原文不太靠谱。

class Node:

    def __init__(self, data):
        self.data = data
        self.next = None

    def get_data(self):
        return self.data

class List:

    def __init__(self, head):
        self.head = head

    def is_empty(self): 
        return self.get_len() == 0

    def get_len(self):  
        length = 0
        temp = self.head
        while temp is not None:
            length += 1
            temp = temp.next
        return length

    def append(self, node):
        temp = self.head
        while temp.next is not None:
            temp = temp.next
        temp.next = node

    def delete(self, index): 
        if index < 1 or index > self.get_len():
            print("给定位置不合理")
            return
        if index == 1:
            self.head = self.head.next
            return
        temp = self.head
        cur_pos = 0
        while temp is not None:
            cur_pos += 1
            if cur_pos == index-1:
                temp.next = temp.next.next
            temp = temp.next

    def insert(self, pos, node):
        if pos < 1 or pos > self.get_len():
            print("插入结点位置不合理")
            return
        temp = self.head
        cur_pos = 0
        while temp is not Node:
            cur_pos += 1
            if cur_pos == pos-1:
                node.next = temp.next
                temp.next =node
                break
            temp = temp.next

    def reverse(self, head):
        if head is None and head.next is None:
            return head
        pre = head
        cur = head.next
        while cur is not None:
            temp = cur.next
            cur.next = pre
            pre = cur
            cur = temp
        head.next = None
        return pre

    def print_list(self, head):
        init_data = []
        while head is not None:
            init_data.append(head.get_data())
            head = head.next
        return init_data

if __name__=='__main__':
    head=Node('head')
    link=List(head)
    for i in range(10):
        node=Node(i)
        link.append(node)
    print(link.print_list(head))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
实例073:反向输出链表
题目 反向输出一个链表。

程序分析 无。

class Node:

    def __init__(self, data):
        self.data = data
        self.next = None

    def get_data(self):
        return self.data

class List:

    def __init__(self, head):
        self.head = head

    def is_empty(self): 
        return self.get_len() == 0

    def get_len(self):  
        length = 0
        temp = self.head
        while temp is not None:
            length += 1
            temp = temp.next
        return length

    def append(self, node):
        temp = self.head
        while temp.next is not None:
            temp = temp.next
        temp.next = node

    def delete(self, index): 
        if index < 1 or index > self.get_len():
            print("给定位置不合理")
            return
        if index == 1:
            self.head = self.head.next
            return
        temp = self.head
        cur_pos = 0
        while temp is not None:
            cur_pos += 1
            if cur_pos == index-1:
                temp.next = temp.next.next
            temp = temp.next

    def insert(self, pos, node):
        if pos < 1 or pos > self.get_len():
            print("插入结点位置不合理")
            return
        temp = self.head
        cur_pos = 0
        while temp is not Node:
            cur_pos += 1
            if cur_pos == pos-1:
                node.next = temp.next
                temp.next =node
                break
            temp = temp.next

    def reverse(self, head):
        if head is None and head.next is None:
            return head
        pre = head
        cur = head.next
        while cur is not None:
            temp = cur.next
            cur.next = pre
            pre = cur
            cur = temp
        head.next = None
        return pre

    def print_list(self, head):
        init_data = []
        while head is not None:
            init_data.append(head.get_data())
            head = head.next
        return init_data

if __name__=='__main__':
    head=Node('head')
    link=List(head)
    for i in range(10):
        node=Node(i)
        link.append(node)
    print(link.print_list(head))
    print(link.print_list(link.reverse(head)))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
实例074:列表排序、连接
题目 列表排序及连接。

程序分析 排序可使用 sort() 方法,连接可以使用 + 号或 extend() 方法。

a=[2,6,8]
b=[7,0,4]
a.extend(b)
a.sort()
print(a)
1
2
3
4
5
实例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)
1
2
3
4
5
6
7
8
实例076:做函数
题目 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n

程序分析 无。

def peven(n):
    i = 0
    s = 0.0
    for i in range(2,n + 1,2):
        s += 1.0 / i
    return s
 
def podd(n):
    s = 0.0
    for i in range(1, n + 1,2):
        s += 1.0 / i
    return s
 
def dcall(fp,n):
    s = fp(n)
    return s
 
if __name__ == '__main__':
    n = int(input('input a number: '))
    if n % 2 == 0:
        sum = dcall(peven,n)
    else:
        sum = dcall(podd,n)
    print (sum)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
实例077:遍历列表
题目 循环输出列表

程序分析 无。

l=['moyu','niupi','xuecaibichi','shengfaji','42']
for i in range(len(l)):
    print(l[i])
1
2
3
实例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]))
1
2
3
4
5
6
7
8
实例079:字符串排序
题目 字符串排序。

程序分析 无。

l=['baaa','aaab','aaba','aaaa','abaa']
l.sort()
print(l)
1
2
3
实例080:猴子分桃
题目 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

程序分析 无。

if __name__ == '__main__':
    i = 0
    j = 1
    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(5):
        x=(x-1)/5*4
    print(x)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
实例081:求未知数
题目 809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

程序分析 无。

a = 809
for i in range(10,100):
    b = i * a
    if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100:
        print(b,' = 800 * ', i, ' + 9 * ', i)


for i in range(10,100):
    if 8*i>99 or 9*i<100:
        continue
    if 809*i==800*i+9*i:
        print(i)
        break
1
2
3
4
5
6
7
8
9
10
11
12
13
实例082:八进制转十进制
题目 八进制转换为十进制

程序分析 无。

n=eval('0o'+str(int(input('八进制输入:'))))
print(n)
1
2
实例083:制作奇数
题目 求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)
1
2
3
4
5
6
7
8
9
10
11
实例084:连接字符串
题目 连接字符串。

程序分析 无。

delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print(delimiter.join(mylist))
1
2
3
实例085:整除
题目 输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。

程序分析 999999 / 13 = 76923。

if __name__ == '__main__':
    zi = int(input('输入一个数字:'))
    n1 = 1
    c9 = 1
    m9 = 9
    sum = 9
    while n1 != 0:
        if sum % zi == 0:
            n1 = 0
        else:
            m9 *= 10
            sum += m9
            c9 += 1
    print ('%d 个 9 可以被 %d 整除 : %d' % (c9,zi,sum))
    r = sum / zi
    print ('%d / %d = %d' % (sum,zi,r))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
实例086:连接字符串II
题目 两个字符串连接程序。

程序分析 无。

a='guangtou'
b='feipang'
print(b+a)
1
2
3
实例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)
1
2
3
4
5
6
7
8
9
10
11
12
实例088:打印星号
题目 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

程序分析 无。

for i in range(3):
    print('*'*int(input('input a number: ')))
1
2
实例089:解码
题目 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

程序分析 无。

n=input()
n = str(n)
a=[]
for i in range(4):
    a.append((int(n[i])+5)%10)
a[0],a[3]=a[3],a[0]
a[1],a[2]=a[2],a[1]
print ("".join('%s' %s for s in a))

1
2
3
4
5
6
7
8
9
实例090:列表详解
题目 列表使用实例。

程序分析 无。

#list  
#新建列表  
testList=[10086,'中国移动',[1,2,4,5]]  
  
#访问列表长度  
print (len(testList)  )
#到列表结尾  
print (testList[1:])
#向列表添加元素  
testList.append('i\'m new here!')  
  
print (len(testList)  )
print (testList[-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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
实例091:time模块
题目 时间函数举例1。

程序分析 无。

if __name__ == '__main__':
    import time
    print (time.ctime(time.time()))
    print (time.asctime(time.localtime(time.time())))
    print (time.asctime(time.gmtime(time.time())))
1
2
3
4
5
实例092:time模块II
题目 时间函数举例2。

程序分析 如何浪费时间。

if __name__ == '__main__':
    import time
    start = time.time()
    for i in range(3000):
        print(i)
    end = time.time()
 
    print (end - start)
1
2
3
4
5
6
7
8
实例093:time模块III
题目 时间函数举例3。

程序分析 如何浪费时间。

if __name__ == '__main__':
    import time
    start = time.clock()
    for i in range(100):
        print(i)
    end = time.clock()
    print('different is %6.3f' % (end - start))
1
2
3
4
5
6
7
实例094:time模块IV
题目 时间函数举例4。

程序分析 如何浪费时间。

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.clock()
        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.clock()
        b = time.time()
        var = (end - start) / 18.2
        print (var)
        # print 'It took you %6.3 seconds' % time.difftime(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.')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
实例095:转换时间格式
题目 字符串日期转换为易读的日期格式。

程序分析 看看就得了,dateutil是个第三方库。

from dateutil import parser
dt = parser.parse("Aug 28 2015 12:00AM")
print (dt)
1
2
3
实例096:计算复读次数
题目 计算字符串中子串出现的次数。

程序分析 无。

s1='xuebixuebixuebixuebixuebixuebixuebixue'
s2='xuebi'
print(s1.count(s2))
1
2
3
实例097:磁盘写入
题目 从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。

程序分析 无。

if __name__ == '__main__':
    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()
1
2
3
4
5
6
7
8
9
10
实例098:磁盘写入II
题目 从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"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()
1
2
3
4
5
6
7
8
实例099:磁盘读写
题目 有两个磁盘文件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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
实例100:列表转字典
题目 列表转换为字典。

程序分析 无。

i = ['a', 'b']
l = [1, 2]
print (dict(zip(i,l)))
————————————————
版权声明:本文为CSDN博主「超级大黄狗Shawn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41084236/article/details/81564963

  1. ython3 100
  2. 原题地址:
  3. http://www.runoob.com/python/python-100-examples.html
  4. git地址:
  5. https://github.com/RichardFu123/Python100Cases
  6. 转载请标注:
  7. https://blog.csdn.net/weixin_41084236/article/details/81564963
  8. 原例为Python2.7版本
  9. 重写过程中有不少是随意发挥的
  10. 重写运行版本:Python3.7
  11. 作者:Shawn
  12. 总的来说,并没有什么难度,全部搂了一遍也只花了不到2天时间,其中还有一半以上的时间是用来写文档的。
  13. 用来练练手还是凑合的。
  14. 文章目录
  15. Python3 100
  16. 实例001:数字组合
  17. 实例002:“个税计算”
  18. 实例003:完全平方数
  19. 实例004:这天第几天
  20. 实例005:三数排序
  21. 实例006:斐波那契数列
  22. 实例007:copy
  23. 实例008:九九乘法表
  24. 实例009:暂停一秒输出
  25. 实例010:给人看的时间
  26. 实例011:养兔子
  27. 实例012:100200的素数
  28. 实例013:所有水仙花数
  29. 实例014:分解质因数
  30. 实例015:分数归档
  31. 实例016:输出日期
  32. 实例017:字符串构成
  33. 实例018:复读机相加
  34. 实例019:完数
  35. 实例020:高空抛物
  36. 实例021:猴子偷桃
  37. 实例022:比赛对手
  38. 实例023:画菱形
  39. 实例024:斐波那契数列II
  40. 实例025: 阶乘求和
  41. 实例026:递归求阶乘
  42. 实例027:递归输出
  43. 实例028:递归求等差数列
  44. 实例029:反向输出
  45. 实例030:回文数
  46. 实例031:字母识词
  47. 实例032:反向输出II
  48. 实例033:列表转字符串
  49. 实例034:调用函数
  50. 实例035:设置输出颜色
  51. 实例036:算素数
  52. 实例037:排序
  53. 实例038:矩阵对角线之和
  54. 实例039:有序列表插入元素
  55. 实例040:逆序列表
  56. 实例041:类的方法与变量
  57. 实例042:变量作用域
  58. 实例043:作用域、类的方法与变量
  59. 实例044:矩阵相加
  60. 实例045:求和
  61. 实例046:打破循环
  62. 实例047:函数交换变量
  63. 实例048:数字比大小
  64. 实例049:lambda
  65. 实例050:随机数
  66. 实例051:按位与
  67. 实例052:按位或
  68. 实例053:按位异或
  69. 实例054:位取反、位移动
  70. 实例055:按位取反
  71. 实例056:画圈
  72. 实例057:画线
  73. 实例058:画矩形
  74. 实例059:画图(丑)
  75. 实例060:字符串长度
  76. 实例061:杨辉三角
  77. 实例062:查找字符串
  78. 实例063:画椭圆
  79. 实例064:画椭圆、矩形
  80. 实例065:画组合图形
  81. 实例066:三数排序
  82. 实例067:交换位置
  83. 实例068:旋转数列
  84. 实例069:报数
  85. 实例070:字符串长度II
  86. 实例071:输入和输出
  87. 实例072:创建链表
  88. 实例073:反向输出链表
  89. 实例074:列表排序、连接
  90. 实例075:不知所云
  91. 实例076:做函数
  92. 实例077:遍历列表
  93. 实例078:字典
  94. 实例079:字符串排序
  95. 实例080:猴子分桃
  96. 实例081:求未知数
  97. 实例082:八进制转十进制
  98. 实例083:制作奇数
  99. 实例084:连接字符串
  100. 实例085:整除
  101. 实例086:连接字符串II
  102. 实例087:访问类成员
  103. 实例088:打印星号
  104. 实例089:解码
  105. 实例090:列表详解
  106. 实例091:time模块
  107. 实例092:time模块II
  108. 实例093:time模块III
  109. 实例094:time模块IV
  110. 实例095:转换时间格式
  111. 实例096:计算复读次数
  112. 实例097:磁盘写入
  113. 实例098:磁盘写入II
  114. 实例099:磁盘读写
  115. 实例100:列表转字典
  116. 实例001:数字组合
  117. 题目 有四个数字:1234,能组成多少个互不相同且无重复数字的三位数?各是多少?
  118. 程序分析 遍历全部可能,把有重复的剃掉。
  119. total=0
  120. for i in range(1,5):
  121. for j in range(1,5):
  122. for k in range(1,5):
  123. if ((i!=j)and(j!=k)and(k!=i)):
  124. print(i,j,k)
  125. total+=1
  126. print(total)
  127. 1
  128. 2
  129. 3
  130. 4
  131. 5
  132. 6
  133. 7
  134. 8
  135. 简便方法 用itertools中的permutations即可。
  136. import itertools
  137. sum2=0
  138. a=[1,2,3,4]
  139. for i in itertools.permutations(a,3):
  140. print(i)
  141. sum2+=1
  142. print(sum2)
  143. 1
  144. 2
  145. 3
  146. 4
  147. 5
  148. 6
  149. 7
  150. 8
  151. 实例002:“个税计算”
  152. 题目 企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
  153. 程序分析 分区间计算即可。
  154. profit=int(input('Show me the money: '))
  155. bonus=0
  156. thresholds=[100000,100000,200000,200000,400000]
  157. rates=[0.1,0.075,0.05,0.03,0.015,0.01]
  158. for i in range(len(thresholds)):
  159. if profit<=thresholds[i]:
  160. bonus+=profit*rates[i]
  161. profit=0
  162. break
  163. else:
  164. bonus+=thresholds[i]*rates[i]
  165. profit-=thresholds[i]
  166. bonus+=profit*rates[-1]
  167. print(bonus)
  168. 1
  169. 2
  170. 3
  171. 4
  172. 5
  173. 6
  174. 7
  175. 8
  176. 9
  177. 10
  178. 11
  179. 12
  180. 13
  181. 14
  182. 实例003:完全平方数
  183. 题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
  184. 程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:
  185. n=0
  186. while (n+1)**2-n*n<=168:
  187. n+=1
  188. print(n+1)
  189. ----------
  190. 85
  191. 1
  192. 2
  193. 3
  194. 4
  195. 5
  196. 6
  197. 7
  198. 8
  199. 9
  200. 思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。
  201. 至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。
  202. 结合起来:
  203. n=0
  204. while (n+1)**2-n*n<=168:
  205. n+=1
  206. for i in range((n+1)**2):
  207. if i**0.5==int(i**0.5) and (i+168)**0.5==int((i+168)**0.5):
  208. print(i-100)
  209. 1
  210. 2
  211. 3
  212. 4
  213. 5
  214. 6
  215. 7
  216. 实例004:这天第几天
  217. 题目 输入某年某月某日,判断这一天是这一年的第几天?
  218. 程序分析 特殊情况,闰年时需考虑二月多加一天:
  219. def isLeapYear(y):
  220. return (y%400==0 or (y%4==0 and y%100!=0))
  221. DofM=[0,31,28,31,30,31,30,31,31,30,31,30]
  222. res=0
  223. year=int(input('Year:'))
  224. month=int(input('Month:'))
  225. day=int(input('day:'))
  226. if isLeapYear(year):
  227. DofM[2]+=1
  228. for i in range(month):
  229. res+=DofM[i]
  230. print(res+day)
  231. 1
  232. 2
  233. 3
  234. 4
  235. 5
  236. 6
  237. 7
  238. 8
  239. 9
  240. 10
  241. 11
  242. 12
  243. 13
  244. 实例005:三数排序
  245. 题目 输入三个整数x,y,z,请把这三个数由小到大输出。
  246. 程序分析 练练手就随便找个排序算法实现一下,偷懒就直接调函数。
  247. raw=[]
  248. for i in range(3):
  249. x=int(input('int%d: '%(i)))
  250. raw.append(x)
  251. for i in range(len(raw)):
  252. for j in range(i,len(raw)):
  253. if raw[i]>raw[j]:
  254. raw[i],raw[j]=raw[j],raw[i]
  255. print(raw)
  256. raw2=[]
  257. for i in range(3):
  258. x=int(input('int%d: '%(i)))
  259. raw2.append(x)
  260. print(sorted(raw2))
  261. 1
  262. 2
  263. 3
  264. 4
  265. 5
  266. 6
  267. 7
  268. 8
  269. 9
  270. 10
  271. 11
  272. 12
  273. 13
  274. 14
  275. 15
  276. 16
  277. 17
  278. 18
  279. 实例006:斐波那契数列
  280. 题目 斐波那契数列。
  281. 程序分析 斐波那契数列(Fibonacci sequence),从1,1开始,后面每一项等于前面两项之和。图方便就递归实现,图性能就用循环。
  282. # 递归实现
  283. def Fib(n):
  284. return 1 if n<=2 else Fib(n-1)+Fib(n-2)
  285. print(Fib(int(input())))
  286. # 朴素实现
  287. target=int(input())
  288. res=0
  289. a,b=1,1
  290. for i in range(target-1):
  291. a,b=b,a+b
  292. print(a)
  293. 1
  294. 2
  295. 3
  296. 4
  297. 5
  298. 6
  299. 7
  300. 8
  301. 9
  302. 10
  303. 11
  304. 12
  305. 13
  306. 实例007:copy
  307. 题目 将一个列表的数据复制到另一个列表中。
  308. 程序分析 使用列表[:],拿不准可以调用copy模块。
  309. import copy
  310. a = [1,2,3,4,['a','b']]
  311. b = a # 赋值
  312. c = a[:] # 浅拷贝
  313. d = copy.copy(a) # 浅拷贝
  314. e = copy.deepcopy(a) # 深拷贝
  315. a.append(5)
  316. a[4].append('c')
  317. print('a=',a)
  318. print('b=',b)
  319. print('c=',c)
  320. print('d=',d)
  321. print('e=',e)
  322. ============ RESTART: F:\PyWorkspace\Python100\100examples\007.py ============
  323. a= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
  324. b= [1, 2, 3, 4, ['a', 'b', 'c'], 5]
  325. c= [1, 2, 3, 4, ['a', 'b', 'c']]
  326. d= [1, 2, 3, 4, ['a', 'b', 'c']]
  327. e= [1, 2, 3, 4, ['a', 'b']]
  328. 1
  329. 2
  330. 3
  331. 4
  332. 5
  333. 6
  334. 7
  335. 8
  336. 9
  337. 10
  338. 11
  339. 12
  340. 13
  341. 14
  342. 15
  343. 16
  344. 17
  345. 18
  346. 19
  347. 20
  348. 21
  349. 22
  350. 23
  351. 实例008:九九乘法表
  352. 题目 输出 9*9 乘法口诀表。
  353. 程序分析 分行与列考虑,共99列,i控制行,j控制列。
  354. for i in range(1,10):
  355. for j in range(1,i+1):
  356. print('%d*%d=%2ld '%(i,j,i*j),end='')
  357. print()
  358. 1
  359. 2
  360. 3
  361. 4
  362. 实例009:暂停一秒输出
  363. 题目 暂停一秒输出。
  364. 程序分析 使用 time 模块的 sleep() 函数。
  365. import time
  366. for i in range(4):
  367. print(str(int(time.time()))[-2:])
  368. time.sleep(1)
  369. 1
  370. 2
  371. 3
  372. 4
  373. 实例010:给人看的时间
  374. 题目 暂停一秒输出,并格式化当前时间。
  375. 程序分析 同009.
  376. import time
  377. for i in range(4):
  378. print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
  379. time.sleep(1)
  380. 1
  381. 2
  382. 3
  383. 4
  384. 5
  385. 实例011:养兔子
  386. 题目 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  387. 程序分析 我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。
  388. month=int(input('繁殖几个月?: '))
  389. month_1=1
  390. month_2=0
  391. month_3=0
  392. month_elder=0
  393. for i in range(month):
  394. month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3
  395. print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子')
  396. print('其中1月兔:',month_1)
  397. print('其中2月兔:',month_2)
  398. print('其中3月兔:',month_3)
  399. print('其中成年兔:',month_elder)
  400. 1
  401. 2
  402. 3
  403. 4
  404. 5
  405. 6
  406. 7
  407. 8
  408. 9
  409. 10
  410. 11
  411. 12
  412. 实例012:100200的素数
  413. 题目 判断101-200之间有多少个素数,并输出所有素数。
  414. 程序分析 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 用else可以进一步简化代码.
  415. import math
  416. for i in range(100,200):
  417. flag=0
  418. for j in range(2,round(math.sqrt(i))+1):
  419. if i%j==0:
  420. flag=1
  421. break
  422. if flag:
  423. continue
  424. print(i)
  425. print('\nSimplify the code with "else"\n')
  426. for i in range(100,200):
  427. for j in range(2,round(math.sqrt(i))+1):
  428. if i%j==0:
  429. break
  430. else:
  431. print(i)
  432. 1
  433. 2
  434. 3
  435. 4
  436. 5
  437. 6
  438. 7
  439. 8
  440. 9
  441. 10
  442. 11
  443. 12
  444. 13
  445. 14
  446. 15
  447. 16
  448. 17
  449. 18
  450. 19
  451. 20
  452. 21
  453. 实例013:所有水仙花数
  454. 题目 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
  455. 程序分析 利用for循环控制100-999个数,每个数分解出个位,十位,百位。
  456. for i in range(100,1000):
  457. s=str(i)
  458. one=int(s[-1])
  459. ten=int(s[-2])
  460. hun=int(s[-3])
  461. if i == one**3+ten**3+hun**3:
  462. print(i)
  463. 1
  464. 2
  465. 3
  466. 4
  467. 5
  468. 6
  469. 7
  470. 实例014:分解质因数
  471. 题目 将一个整数分解质因数。例如:输入90,打印出90=233*5
  472. 程序分析 根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。
  473. target=int(input('输入一个整数:'))
  474. print(target,'= ',end='')
  475. if target<0:
  476. target=abs(target)
  477. print('-1*',end='')
  478. flag=0
  479. if target<=1:
  480. print(target)
  481. flag=1
  482. while True:
  483. if flag:
  484. break
  485. for i in range(2,int(target+1)):
  486. if target%i==0:
  487. print("%d"%i,end='')
  488. if target==i:
  489. flag=1
  490. break
  491. print('*',end='')
  492. target/=i
  493. break
  494. 1
  495. 2
  496. 3
  497. 4
  498. 5
  499. 6
  500. 7
  501. 8
  502. 9
  503. 10
  504. 11
  505. 12
  506. 13
  507. 14
  508. 15
  509. 16
  510. 17
  511. 18
  512. 19
  513. 20
  514. 21
  515. 22
  516. 23
  517. 24
  518. 25
  519. 26
  520. 实例015:分数归档
  521. 题目 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
  522. 程序分析 用条件判断即可。
  523. points=int(input('输入分数:'))
  524. if points>=90:
  525. grade='A'
  526. elif points<60:
  527. grade='C'
  528. else:
  529. grade='B'
  530. print(grade)
  531. 1
  532. 2
  533. 3
  534. 4
  535. 5
  536. 6
  537. 7
  538. 8
  539. 实例016:输出日期
  540. 题目 输出指定格式的日期。
  541. 程序分析 使用 datetime 模块。
  542. import datetime
  543. print(datetime.date.today())
  544. print(datetime.date(2333,2,3))
  545. print(datetime.date.today().strftime('%d/%m/%Y'))
  546. day=datetime.date(1111,2,3)
  547. day=day.replace(year=day.year+22)
  548. print(day)
  549. 1
  550. 2
  551. 3
  552. 4
  553. 5
  554. 6
  555. 7
  556. 实例017:字符串构成
  557. 题目 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
  558. 程序分析 利用 whilefor 语句,条件为输入的字符不为 ‘\n’。
  559. string=input("输入字符串:")
  560. alp=0
  561. num=0
  562. spa=0
  563. oth=0
  564. for i in range(len(string)):
  565. if string[i].isspace():
  566. spa+=1
  567. elif string[i].isdigit():
  568. num+=1
  569. elif string[i].isalpha():
  570. alp+=1
  571. else:
  572. oth+=1
  573. print('space: ',spa)
  574. print('digit: ',num)
  575. print('alpha: ',alp)
  576. print('other: ',oth)
  577. 1
  578. 2
  579. 3
  580. 4
  581. 5
  582. 6
  583. 7
  584. 8
  585. 9
  586. 10
  587. 11
  588. 12
  589. 13
  590. 14
  591. 15
  592. 16
  593. 17
  594. 18
  595. 19
  596. 实例018:复读机相加
  597. 题目 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
  598. 程序分析 用字符串解决。
  599. a=input('被加数字:')
  600. n=int(input('加几次?:'))
  601. res=0
  602. for i in range(n):
  603. res+=int(a)
  604. a+=a[0]
  605. print('结果是:',res)
  606. 1
  607. 2
  608. 3
  609. 4
  610. 5
  611. 6
  612. 7
  613. 实例019:完数
  614. 题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=123.编程找出1000以内的所有完数。
  615. 程序分析 将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其本身。
  616. def factor(num):
  617. target=int(num)
  618. res=set()
  619. for i in range(1,num):
  620. if num%i==0:
  621. res.add(i)
  622. res.add(num/i)
  623. return res
  624. for i in range(2,1001):
  625. if i==sum(factor(i))-i:
  626. print(i)
  627. 1
  628. 2
  629. 3
  630. 4
  631. 5
  632. 6
  633. 7
  634. 8
  635. 9
  636. 10
  637. 11
  638. 12
  639. 实例020:高空抛物
  640. 题目 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
  641. 程序分析 无
  642. high=200.
  643. total=100
  644. for i in range(10):
  645. high/=2
  646. total+=high
  647. print(high/2)
  648. print('总长:',total)
  649. 1
  650. 2
  651. 3
  652. 4
  653. 5
  654. 6
  655. 7
  656. 实例021:猴子偷桃
  657. 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
  658. 程序分析 按规则反向推断:猴子有一个桃子,他偷来一个桃子,觉得不够又偷来了与手上等量的桃子,一共偷了9天。
  659. peach=1
  660. for i in range(9):
  661. peach=(peach+1)*2
  662. print(peach)
  663. 1
  664. 2
  665. 3
  666. 4
  667. 实例022:比赛对手
  668. 题目 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
  669. 程序分析 找到条件下不重复的三个对手即可。
  670. a=set(['x','y','z'])
  671. b=set(['x','y','z'])
  672. c=set(['x','y','z'])
  673. c-=set(('x','z'))
  674. a-=set('x')
  675. for i in a:
  676. for j in b:
  677. for k in c:
  678. if len(set((i,j,k)))==3:
  679. print('a:%s,b:%s,c:%s'%(i,j,k))
  680. 1
  681. 2
  682. 3
  683. 4
  684. 5
  685. 6
  686. 7
  687. 8
  688. 9
  689. 10
  690. 实例023:画菱形
  691. 题目 打印出如下图案(菱形):
  692.     *
  693.    ***
  694.   *****
  695.  *******
  696.   *****
  697.    ***
  698.     *
  699. 程序分析 递归调用即可。
  700. def draw(num):
  701. a="*"*(2*(4-num)+1)
  702. print(a.center(9,' '))
  703. if num!=1:
  704. draw(num-1)
  705. print(a.center(9,' '))
  706. draw(4)
  707. 1
  708. 2
  709. 3
  710. 4
  711. 5
  712. 6
  713. 7
  714. 实例024:斐波那契数列II
  715. 题目 有一分数序列:2/13/25/38/513/821/13…求出这个数列的前20项之和。
  716. 程序分析 就是斐波那契数列的后一项除以前一项。
  717. a = 2.0
  718. b = 1.0
  719. s = 0
  720. for n in range(1,21):
  721. s += a / b
  722. a,b = a + b,a
  723. print (s)
  724. 1
  725. 2
  726. 3
  727. 4
  728. 5
  729. 6
  730. 7
  731. 8
  732. 实例025: 阶乘求和
  733. 题目 求1+2!+3!+…+20!的和。
  734. 程序分析 1+2!+3!+…+20!=1+2(1+3(1+4(…20(1))))
  735. res=1
  736. for i in range(20,1,-1):
  737. res=i*res+1
  738. print(res)
  739. 1
  740. 2
  741. 3
  742. 4
  743. 实例026:递归求阶乘
  744. 题目 利用递归方法求5!。
  745. 程序分析 递归调用即可。
  746. def factorial(n):
  747. return n*factorial(n-1) if n>1 else 1
  748. print(factorial(5))
  749. 1
  750. 2
  751. 3
  752. 实例027:递归输出
  753. 题目 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
  754. 程序分析 递归真是蠢方法。
  755. def rec(string):
  756. if len(string)!=1:
  757. rec(string[1:])
  758. print(string[0],end='')
  759. rec(input('string here:'))
  760. 1
  761. 2
  762. 3
  763. 4
  764. 5
  765. 6
  766. 实例028:递归求等差数列
  767. 题目 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
  768. 程序分析 就一等差数列。
  769. def age(n):
  770. if n==1:
  771. return 10
  772. return 2+age(n-1)
  773. print(age(5))
  774. 1
  775. 2
  776. 3
  777. 4
  778. 5
  779. 实例029:反向输出
  780. 题目 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
  781. 程序分析 学会分解出每一位数,用字符串的方法总是比较省事。
  782. n=int(input('输入一个正整数:'))
  783. n=str(n)
  784. print('%d位数'%len(n))
  785. print(n[::-1])
  786. 1
  787. 2
  788. 3
  789. 4
  790. 实例030:回文数
  791. 题目 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
  792. 程序分析 用字符串比较方便,就算输入的不是数字都ok。
  793. n=input("随便你输入啥啦:")
  794. a=0
  795. b=len(n)-1
  796. flag=True
  797. while a<b:
  798. if n[a]!=n[b]:
  799. print('不是回文串')
  800. flag=False
  801. break
  802. a,b=a+1,b-1
  803. if flag:
  804. print('是回文串')
  805. 1
  806. 2
  807. 3
  808. 4
  809. 5
  810. 6
  811. 7
  812. 8
  813. 9
  814. 10
  815. 11
  816. 12
  817. 实例031:字母识词
  818. 题目 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
  819. 程序分析 这里用字典的形式直接将对照关系存好。
  820. weekT={'h':'thursday',
  821. 'u':'tuesday'}
  822. weekS={'a':'saturday',
  823. 'u':'sunday'}
  824. week={'t':weekT,
  825. 's':weekS,
  826. 'm':'monday',
  827. 'w':'wensday',
  828. 'f':'friday'}
  829. a=week[str(input('请输入第一位字母:')).lower()]
  830. if a==weekT or a==weekS:
  831. print(a[str(input('请输入第二位字母:')).lower()])
  832. else:
  833. print(a)
  834. 1
  835. 2
  836. 3
  837. 4
  838. 5
  839. 6
  840. 7
  841. 8
  842. 9
  843. 10
  844. 11
  845. 12
  846. 13
  847. 14
  848. 15
  849. 实例032:反向输出II
  850. 题目 按相反的顺序输出列表的值。
  851. 程序分析 无。
  852. a = ['one', 'two', 'three']
  853. print(a[::-1])
  854. 1
  855. 2
  856. 实例033:列表转字符串
  857. 题目 按逗号分隔列表。
  858. 程序分析 无。
  859. L = [1,2,3,4,5]
  860. print(','.join(str(n) for n in L))
  861. 1
  862. 2
  863. 实例034:调用函数
  864. 题目 练习函数调用。
  865. 程序分析 无。
  866. def hello():
  867. print('Hello World!')
  868. def helloAgain():
  869. for i in range(2):
  870. hello()
  871. if __name__=='__main__':
  872. helloAgain()
  873. 1
  874. 2
  875. 3
  876. 4
  877. 5
  878. 6
  879. 7
  880. 8
  881. 实例035:设置输出颜色
  882. 题目 文本颜色设置。
  883. 程序分析 无。
  884. class bcolors:
  885. HEADER = '\033[95m'
  886. OKBLUE = '\033[94m'
  887. OKGREEN = '\033[92m'
  888. WARNING = '\033[93m'
  889. FAIL = '\033[91m'
  890. ENDC = '\033[0m'
  891. BOLD = '\033[1m'
  892. UNDERLINE = '\033[4m'
  893. print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)
  894. 1
  895. 2
  896. 3
  897. 4
  898. 5
  899. 6
  900. 7
  901. 8
  902. 9
  903. 10
  904. 实例036:算素数
  905. 题目 求100之内的素数。
  906. 程序分析 用else执行for循环的奖励代码(如果for是正常完结,非break)。
  907. lo=int(input('下限:'))
  908. hi=int(input('上限:'))
  909. for i in range(lo,hi+1):
  910. if i > 1:
  911. for j in range(2,i):
  912. if (i % j) == 0:
  913. break
  914. else:
  915. print(i)
  916. 1
  917. 2
  918. 3
  919. 4
  920. 5
  921. 6
  922. 7
  923. 8
  924. 9
  925. 实例037:排序
  926. 题目 对10个数进行排序。
  927. 程序分析 同实例005。
  928. raw=[]
  929. for i in range(10):
  930. x=int(input('int%d: '%(i)))
  931. raw.append(x)
  932. for i in range(len(raw)):
  933. for j in range(i,len(raw)):
  934. if raw[i]>raw[j]:
  935. raw[i],raw[j]=raw[j],raw[i]
  936. print(raw)
  937. 1
  938. 2
  939. 3
  940. 4
  941. 5
  942. 6
  943. 7
  944. 8
  945. 9
  946. 10
  947. 11
  948. 实例038:矩阵对角线之和
  949. 题目 求一个3*3矩阵主对角线元素之和。
  950. 程序分析 无。
  951. mat=[[1,2,3],
  952. [3,4,5],
  953. [4,5,6]
  954. ]
  955. res=0
  956. for i in range(len(mat)):
  957. res+=mat[i][i]
  958. print(res)
  959. 1
  960. 2
  961. 3
  962. 4
  963. 5
  964. 6
  965. 7
  966. 8
  967. 实例039:有序列表插入元素
  968. 题目 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
  969. 程序分析 首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
  970. lis=[1,10,100,1000,10000,100000]
  971. n=int(input('insert a number: '))
  972. lis.append(n)
  973. for i in range(len(lis)-1):
  974. if lis[i]>=n:
  975. for j in range(i,len(lis)):
  976. lis[j],lis[-1]=lis[-1],lis[j]
  977. break
  978. print(lis)
  979. 1
  980. 2
  981. 3
  982. 4
  983. 5
  984. 6
  985. 7
  986. 8
  987. 9
  988. 实例040:逆序列表
  989. 题目 将一个数组逆序输出。
  990. 程序分析 依次交换位置,或者直接调用reverse方法。
  991. lis=[1,10,100,1000,10000,100000]
  992. for i in range(int(len(lis)/2)):
  993. lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i]
  994. print('第一种实现:')
  995. print(lis)
  996. lis=[1,10,100,1000,10000,100000]
  997. print('第二种实现:')
  998. lis.reverse()
  999. print(lis)
  1000. 1
  1001. 2
  1002. 3
  1003. 4
  1004. 5
  1005. 6
  1006. 7
  1007. 8
  1008. 9
  1009. 10
  1010. 11
  1011. 12
  1012. 实例041:类的方法与变量
  1013. 题目 模仿静态变量的用法。
  1014. 程序分析 构造类,了解类的方法与变量。
  1015. def dummy():
  1016. i=0
  1017. print(i)
  1018. i+=1
  1019. class cls:
  1020. i=0
  1021. def dummy(self):
  1022. print(self.i)
  1023. self.i+=1
  1024. a=cls()
  1025. for i in range(50):
  1026. dummy()
  1027. a.dummy()
  1028. 1
  1029. 2
  1030. 3
  1031. 4
  1032. 5
  1033. 6
  1034. 7
  1035. 8
  1036. 9
  1037. 10
  1038. 11
  1039. 12
  1040. 13
  1041. 14
  1042. 15
  1043. 实例042:变量作用域
  1044. 题目 学习使用auto定义变量的用法。
  1045. 程序分析 python中的变量作用域。
  1046. i=0
  1047. n=0
  1048. def dummy():
  1049. i=0
  1050. print(i)
  1051. i+=1
  1052. def dummy2():
  1053. global n
  1054. print(n)
  1055. n+=1
  1056. print('函数内部的同名变量')
  1057. for j in range(20):
  1058. print(i)
  1059. dummy()
  1060. i+=1
  1061. print('global声明同名变量')
  1062. for k in range(20):
  1063. print(n)
  1064. dummy2()
  1065. n+=10
  1066. 1
  1067. 2
  1068. 3
  1069. 4
  1070. 5
  1071. 6
  1072. 7
  1073. 8
  1074. 9
  1075. 10
  1076. 11
  1077. 12
  1078. 13
  1079. 14
  1080. 15
  1081. 16
  1082. 17
  1083. 18
  1084. 19
  1085. 20
  1086. 实例043:作用域、类的方法与变量
  1087. 题目 模仿静态变量(static)另一案例。
  1088. 程序分析 综合实例041和实例042。
  1089. class dummy:
  1090. num=1
  1091. def Num(self):
  1092. print('class dummy num:',self.num)
  1093. print('global num: ',num)
  1094. self.num+=1
  1095. n=dummy()
  1096. num=1
  1097. for i in range(5):
  1098. num*=10
  1099. n.Num()
  1100. 1
  1101. 2
  1102. 3
  1103. 4
  1104. 5
  1105. 6
  1106. 7
  1107. 8
  1108. 9
  1109. 10
  1110. 11
  1111. 12
  1112. 实例044:矩阵相加
  1113. 题目 计算两个矩阵相加。
  1114. 程序分析 创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。
  1115. X = [[12,7,3],
  1116. [4 ,5,6],
  1117. [7 ,8,9]]
  1118. Y = [[5,8,1],
  1119. [6,7,3],
  1120. [4,5,9]]
  1121. res=[[0,0,0],
  1122. [0,0,0],
  1123. [0,0,0]]
  1124. for i in range(len(res)):
  1125. for j in range(len(res[0])):
  1126. res[i][j]=X[i][j]+Y[i][j]
  1127. print(res)
  1128. 1
  1129. 2
  1130. 3
  1131. 4
  1132. 5
  1133. 6
  1134. 7
  1135. 8
  1136. 9
  1137. 10
  1138. 11
  1139. 12
  1140. 13
  1141. 14
  1142. 15
  1143. 16
  1144. 实例045:求和
  1145. 题目 统计 1100 之和。
  1146. 程序分析 无
  1147. res=0
  1148. for i in range(1,101):
  1149. res+=i
  1150. print(res)
  1151. 1
  1152. 2
  1153. 3
  1154. 4
  1155. 实例046:打破循环
  1156. 题目 求输入数字的平方,如果平方运算后小于 50 则退出。
  1157. 程序分析 无
  1158. while True:
  1159. try:
  1160. n=float(input('输入一个数字:'))
  1161. except:
  1162. print('输入错误')
  1163. continue
  1164. dn=n**2
  1165. print('其平方为:',dn)
  1166. if dn<50:
  1167. print('平方小于50,退出')
  1168. break
  1169. 1
  1170. 2
  1171. 3
  1172. 4
  1173. 5
  1174. 6
  1175. 7
  1176. 8
  1177. 9
  1178. 10
  1179. 11
  1180. 实例047:函数交换变量
  1181. 题目 两个变量值用函数互换。
  1182. 程序分析 无
  1183. def exc(a,b):
  1184. return (b,a)
  1185. a=0
  1186. b=10
  1187. a,b=exc(a,b)
  1188. print(a,b)
  1189. 1
  1190. 2
  1191. 3
  1192. 4
  1193. 5
  1194. 6
  1195. 实例048:数字比大小
  1196. 题目 数字比较。
  1197. 程序分析 无
  1198. a=int(input('a='))
  1199. b=int(input('b='))
  1200. if a<b:
  1201. print('a<b')
  1202. elif a>b:
  1203. print('a>b')
  1204. else:
  1205. print('a=b')
  1206. 1
  1207. 2
  1208. 3
  1209. 4
  1210. 5
  1211. 6
  1212. 7
  1213. 8
  1214. 实例049:lambda
  1215. 题目 使用lambda来创建匿名函数。
  1216. 程序分析 无
  1217. Max=lambda x,y:x*(x>=y)+y*(y>x)
  1218. Min=lambda x,y:x*(x<=y)+y*(y<x)
  1219. a=int(input('1:'))
  1220. b=int(input('2:'))
  1221. print(Max(a,b))
  1222. print(Min(a,b))
  1223. 1
  1224. 2
  1225. 3
  1226. 4
  1227. 5
  1228. 6
  1229. 7
  1230. 8
  1231. 实例050:随机数
  1232. 题目 输出一个随机数。
  1233. 程序分析 使用 random 模块。
  1234. import random
  1235. print(random.uniform(10,20))
  1236. 1
  1237. 2
  1238. 实例051:按位与
  1239. 题目 学习使用按位与 & 。
  1240. 程序分析 0&0=0; 0&1=0; 1&0=0; 1&1=1
  1241. a=0o77
  1242. print(a)
  1243. b=a&3
  1244. print(b)
  1245. b=b&7
  1246. print(b)
  1247. 1
  1248. 2
  1249. 3
  1250. 4
  1251. 5
  1252. 6
  1253. 实例052:按位或
  1254. 题目 学习使用按位或 | 。
  1255. 程序分析 0|0=0; 0|1=1; 1|0=1; 1|1=1
  1256. a=0o77
  1257. print(a|3)
  1258. print(a|3|7)
  1259. 1
  1260. 2
  1261. 3
  1262. 实例053:按位异或
  1263. 题目 学习使用按位异或 ^ 。
  1264. 程序分析 0^0=0; 0^1=1; 1^0=1; 1^1=0
  1265. a=0o77
  1266. print(a^3)
  1267. print(a^3^7)
  1268. 1
  1269. 2
  1270. 3
  1271. 实例054:位取反、位移动
  1272. 题目 取一个整数a从右端开始的47位。
  1273. 程序分析 可以这样考虑:
  1274. (1)先使a右移4位。
  1275. (2)设置一个低4位全为1,其余全为0的数。可用(0<<4)
  1276. (3)将上面二者进行&运算。
  1277. a=int(input('输入一个数字: '))
  1278. b=0 # 0
  1279. b=~b # 1
  1280. b=b<<4 # 10000
  1281. b=~b # 1111
  1282. c=a>>4
  1283. d=c&b
  1284. print('a:',bin(a))
  1285. print('b:',bin(b))
  1286. print('c:',bin(c))
  1287. print('d:',bin(d))
  1288. 1
  1289. 2
  1290. 3
  1291. 4
  1292. 5
  1293. 6
  1294. 7
  1295. 8
  1296. 9
  1297. 10
  1298. 11
  1299. 实例055:按位取反
  1300. 题目 学习使用按位取反~。
  1301. 程序分析 ~0=1; ~1=0;
  1302. print(~234)
  1303. print(~~234)
  1304. 1
  1305. 2
  1306. 实例056:画圈
  1307. 题目 画图,学用circle画圆形。
  1308. 程序分析 无。
  1309. from tkinter import *
  1310. canvas=Canvas(width=800,height=600,bg='yellow')
  1311. canvas.pack(expand=YES,fill=BOTH)
  1312. k=1
  1313. j=1
  1314. for i in range(26):
  1315. canvas.create_oval(310-k,250-k,310+k,250+k,width=1)
  1316. k+=j
  1317. j+=0.3
  1318. mainloop()
  1319. 1
  1320. 2
  1321. 3
  1322. 4
  1323. 5
  1324. 6
  1325. 7
  1326. 8
  1327. 9
  1328. 10
  1329. 实例057:画线
  1330. 题目 画图,学用line画直线。
  1331. 程序分析 无。
  1332. if __name__ == '__main__':
  1333. from tkinter import *
  1334. canvas = Canvas(width=300, height=300, bg='green')
  1335. canvas.pack(expand=YES, fill=BOTH)
  1336. x0 = 263
  1337. y0 = 263
  1338. y1 = 275
  1339. x1 = 275
  1340. for i in range(19):
  1341. canvas.create_line(x0,y0,x0,y1, width=1, fill='red')
  1342. x0 = x0 - 5
  1343. y0 = y0 - 5
  1344. x1 = x1 + 5
  1345. y1 = y1 + 5
  1346. x0 = 263
  1347. y1 = 275
  1348. y0 = 263
  1349. for i in range(21):
  1350. canvas.create_line(x0,y0,x0,y1,fill = 'red')
  1351. x0 += 5
  1352. y0 += 5
  1353. y1 += 5
  1354. mainloop()
  1355. 1
  1356. 2
  1357. 3
  1358. 4
  1359. 5
  1360. 6
  1361. 7
  1362. 8
  1363. 9
  1364. 10
  1365. 11
  1366. 12
  1367. 13
  1368. 14
  1369. 15
  1370. 16
  1371. 17
  1372. 18
  1373. 19
  1374. 20
  1375. 21
  1376. 22
  1377. 23
  1378. 24
  1379. 25
  1380. 26
  1381. 实例058:画矩形
  1382. 题目 画图,学用rectangle画方形。
  1383. 程序分析 无。
  1384. if __name__ == '__main__':
  1385. from tkinter import *
  1386. root = Tk()
  1387. root.title('Canvas')
  1388. canvas = Canvas(root,width = 400,height = 400,bg = 'yellow')
  1389. x0 = 263
  1390. y0 = 263
  1391. y1 = 275
  1392. x1 = 275
  1393. for i in range(19):
  1394. canvas.create_rectangle(x0,y0,x1,y1)
  1395. x0 -= 5
  1396. y0 -= 5
  1397. x1 += 5
  1398. y1 += 5
  1399. canvas.pack()
  1400. root.mainloop()
  1401. 1
  1402. 2
  1403. 3
  1404. 4
  1405. 5
  1406. 6
  1407. 7
  1408. 8
  1409. 9
  1410. 10
  1411. 11
  1412. 12
  1413. 13
  1414. 14
  1415. 15
  1416. 16
  1417. 17
  1418. 18
  1419. 实例059:画图(丑)
  1420. 题目 画图,综合例子。
  1421. 程序分析 丑。
  1422. if __name__ == '__main__':
  1423. from tkinter import *
  1424. canvas = Canvas(width = 300,height = 300,bg = 'green')
  1425. canvas.pack(expand = YES,fill = BOTH)
  1426. x0 = 150
  1427. y0 = 100
  1428. canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10)
  1429. canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20)
  1430. canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50)
  1431. import math
  1432. B = 0.809
  1433. for i in range(16):
  1434. a = 2 * math.pi / 16 * i
  1435. x = math.ceil(x0 + 48 * math.cos(a))
  1436. y = math.ceil(y0 + 48 * math.sin(a) * B)
  1437. canvas.create_line(x0,y0,x,y,fill = 'red')
  1438. canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60)
  1439. for k in range(501):
  1440. for i in range(17):
  1441. a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k
  1442. x = math.ceil(x0 + 48 * math.cos(a))
  1443. y = math.ceil(y0 + 48 + math.sin(a) * B)
  1444. canvas.create_line(x0,y0,x,y,fill = 'red')
  1445. for j in range(51):
  1446. a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1
  1447. x = math.ceil(x0 + 48 * math.cos(a))
  1448. y = math.ceil(y0 + 48 * math.sin(a) * B)
  1449. canvas.create_line(x0,y0,x,y,fill = 'red')
  1450. mainloop()
  1451. 1
  1452. 2
  1453. 3
  1454. 4
  1455. 5
  1456. 6
  1457. 7
  1458. 8
  1459. 9
  1460. 10
  1461. 11
  1462. 12
  1463. 13
  1464. 14
  1465. 15
  1466. 16
  1467. 17
  1468. 18
  1469. 19
  1470. 20
  1471. 21
  1472. 22
  1473. 23
  1474. 24
  1475. 25
  1476. 26
  1477. 27
  1478. 28
  1479. 29
  1480. 30
  1481. 31
  1482. 实例060:字符串长度
  1483. 题目 计算字符串长度。
  1484. 程序分析 无。
  1485. s='zhangguang101'
  1486. print(len(s))
  1487. 1
  1488. 2
  1489. 实例061:杨辉三角
  1490. 题目 打印出杨辉三角形前十行。
  1491. 程序分析 无。
  1492. def generate(numRows):
  1493. r = [[1]]
  1494. for i in range(1,numRows):
  1495. r.append(list(map(lambda x,y:x+y, [0]+r[-1],r[-1]+[0])))
  1496. return r[:numRows]
  1497. a=generate(10)
  1498. for i in a:
  1499. print(i)
  1500. 1
  1501. 2
  1502. 3
  1503. 4
  1504. 5
  1505. 6
  1506. 7
  1507. 8
  1508. 实例062:查找字符串
  1509. 题目 查找字符串。
  1510. 程序分析 无。
  1511. s1='aabbxuebixuebi'
  1512. s2='ab'
  1513. s3='xue'
  1514. print(s1.find(s2))
  1515. print(s1.find(s3))
  1516. 1
  1517. 2
  1518. 3
  1519. 4
  1520. 5
  1521. 实例063:画椭圆
  1522. 题目 画椭圆。
  1523. 程序分析 使用 tkinter。
  1524. if __name__ == '__main__':
  1525. from tkinter import *
  1526. x = 360
  1527. y = 160
  1528. top = y - 30
  1529. bottom = y - 30
  1530. canvas = Canvas(width = 400,height = 600,bg = 'white')
  1531. for i in range(20):
  1532. canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom)
  1533. top -= 5
  1534. bottom += 5
  1535. canvas.pack()
  1536. mainloop()
  1537. 1
  1538. 2
  1539. 3
  1540. 4
  1541. 5
  1542. 6
  1543. 7
  1544. 8
  1545. 9
  1546. 10
  1547. 11
  1548. 12
  1549. 13
  1550. 14
  1551. 实例064:画椭圆、矩形
  1552. 题目 利用ellipse 和 rectangle 画图。。
  1553. 程序分析 无。
  1554. if __name__ == '__main__':
  1555. from tkinter import *
  1556. canvas = Canvas(width = 400,height = 600,bg = 'white')
  1557. left = 20
  1558. right = 50
  1559. top = 50
  1560. num = 15
  1561. for i in range(num):
  1562. canvas.create_oval(250 - right,250 - left,250 + right,250 + left)
  1563. canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)
  1564. canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))
  1565. right += 5
  1566. left += 5
  1567. top += 10
  1568. canvas.pack()
  1569. mainloop()
  1570. 1
  1571. 2
  1572. 3
  1573. 4
  1574. 5
  1575. 6
  1576. 7
  1577. 8
  1578. 9
  1579. 10
  1580. 11
  1581. 12
  1582. 13
  1583. 14
  1584. 15
  1585. 16
  1586. 17
  1587. 实例065:画组合图形
  1588. 题目 一个最优美的图案。
  1589. 程序分析 无。
  1590. import math
  1591. from tkinter import *
  1592. class PTS:
  1593. def __init__(self):
  1594. self.x = 0
  1595. self.y = 0
  1596. points = []
  1597. def LineToDemo():
  1598. screenx = 400
  1599. screeny = 400
  1600. canvas = Canvas(width = screenx,height = screeny,bg = 'white')
  1601. AspectRatio = 0.85
  1602. MAXPTS = 15
  1603. h = screeny
  1604. w = screenx
  1605. xcenter = w / 2
  1606. ycenter = h / 2
  1607. radius = (h - 30) / (AspectRatio * 2) - 20
  1608. step = 360 / MAXPTS
  1609. angle = 0.0
  1610. for i in range(MAXPTS):
  1611. rads = angle * math.pi / 180.0
  1612. p = PTS()
  1613. p.x = xcenter + int(math.cos(rads) * radius)
  1614. p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
  1615. angle += step
  1616. points.append(p)
  1617. canvas.create_oval(xcenter - radius,ycenter - radius,
  1618. xcenter + radius,ycenter + radius)
  1619. for i in range(MAXPTS):
  1620. for j in range(i,MAXPTS):
  1621. canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
  1622. canvas.pack()
  1623. mainloop()
  1624. if __name__ == '__main__':
  1625. LineToDemo()
  1626. 1
  1627. 2
  1628. 3
  1629. 4
  1630. 5
  1631. 6
  1632. 7
  1633. 8
  1634. 9
  1635. 10
  1636. 11
  1637. 12
  1638. 13
  1639. 14
  1640. 15
  1641. 16
  1642. 17
  1643. 18
  1644. 19
  1645. 20
  1646. 21
  1647. 22
  1648. 23
  1649. 24
  1650. 25
  1651. 26
  1652. 27
  1653. 28
  1654. 29
  1655. 30
  1656. 31
  1657. 32
  1658. 33
  1659. 34
  1660. 35
  1661. 36
  1662. 37
  1663. 38
  1664. 39
  1665. 40
  1666. 实例066:三数排序
  1667. 题目 输入3个数a,b,c,按大小顺序输出。
  1668. 程序分析 同实例005。
  1669. raw=[]
  1670. for i in range(3):
  1671. x=int(input('int%d: '%(i)))
  1672. raw.append(x)
  1673. for i in range(len(raw)):
  1674. for j in range(i,len(raw)):
  1675. if raw[i]>raw[j]:
  1676. raw[i],raw[j]=raw[j],raw[i]
  1677. print(raw)
  1678. raw2=[]
  1679. for i in range(3):
  1680. x=int(input('int%d: '%(i)))
  1681. raw2.append(x)
  1682. print(sorted(raw2))
  1683. 1
  1684. 2
  1685. 3
  1686. 4
  1687. 5
  1688. 6
  1689. 7
  1690. 8
  1691. 9
  1692. 10
  1693. 11
  1694. 12
  1695. 13
  1696. 14
  1697. 15
  1698. 16
  1699. 17
  1700. 18
  1701. 实例067:交换位置
  1702. 题目 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
  1703. 程序分析 无。
  1704. li=[3,2,5,7,8,1,5]
  1705. li[-1],li[li.index(min(li))]=li[li.index(min(li))],li[-1]
  1706. m=li[0]
  1707. ind=li.index(max(li))
  1708. li[0]=li[ind]
  1709. li[ind]=m
  1710. print(li)
  1711. 1
  1712. 2
  1713. 3
  1714. 4
  1715. 5
  1716. 6
  1717. 7
  1718. 8
  1719. 9
  1720. 10
  1721. 实例068:旋转数列
  1722. 题目 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
  1723. 程序分析 无。
  1724. from collections import *
  1725. li=[1,2,3,4,5,6,7,8,9]
  1726. deq=deque(li,maxlen=len(li))
  1727. print(li)
  1728. deq.rotate(int(input('rotate:')))
  1729. print(list(deq))
  1730. 1
  1731. 2
  1732. 3
  1733. 4
  1734. 5
  1735. 6
  1736. 实例069:报数
  1737. 题目 有n个人围成一圈,顺序排号。从第一个人开始报数(从13报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
  1738. 程序分析 无。
  1739. if __name__ == '__main__':
  1740. nmax = 50
  1741. n = int(input('请输入总人数:'))
  1742. num = []
  1743. for i in range(n):
  1744. num.append(i + 1)
  1745. i = 0
  1746. k = 0
  1747. m = 0
  1748. while m < n - 1:
  1749. if num[i] != 0 : k += 1
  1750. if k == 3:
  1751. num[i] = 0
  1752. k = 0
  1753. m += 1
  1754. i += 1
  1755. if i == n : i = 0
  1756. i = 0
  1757. while num[i] == 0: i += 1
  1758. print(num[i])
  1759. 1
  1760. 2
  1761. 3
  1762. 4
  1763. 5
  1764. 6
  1765. 7
  1766. 8
  1767. 9
  1768. 10
  1769. 11
  1770. 12
  1771. 13
  1772. 14
  1773. 15
  1774. 16
  1775. 17
  1776. 18
  1777. 19
  1778. 20
  1779. 21
  1780. 22
  1781. 23
  1782. 实例070:字符串长度II
  1783. 题目 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
  1784. 程序分析 无。
  1785. def lenofstr(s):
  1786. return len(s)
  1787. print(lenofstr('tanxiaofengsheng'))
  1788. 1
  1789. 2
  1790. 3
  1791. 4
  1792. 实例071:输入和输出
  1793. 题目 编写input()和output()函数输入,输出5个学生的数据记录。
  1794. 程序分析 无。
  1795. N = 3
  1796. #stu
  1797. # num : string
  1798. # name : string
  1799. # score[4]: list
  1800. student = []
  1801. for i in range(5):
  1802. student.append(['','',[]])
  1803. def input_stu(stu):
  1804. for i in range(N):
  1805. stu[i][0] = input('input student num:\n')
  1806. stu[i][1] = input('input student name:\n')
  1807. for j in range(3):
  1808. stu[i][2].append(int(input('score:\n')))
  1809. def output_stu(stu):
  1810. for i in range(N):
  1811. print ('%-6s%-10s' % ( stu[i][0],stu[i][1] ))
  1812. for j in range(3):
  1813. print ('%-8d' % stu[i][2][j])
  1814. if __name__ == '__main__':
  1815. input_stu(student)
  1816. print (student)
  1817. output_stu(student)
  1818. 1
  1819. 2
  1820. 3
  1821. 4
  1822. 5
  1823. 6
  1824. 7
  1825. 8
  1826. 9
  1827. 10
  1828. 11
  1829. 12
  1830. 13
  1831. 14
  1832. 15
  1833. 16
  1834. 17
  1835. 18
  1836. 19
  1837. 20
  1838. 21
  1839. 22
  1840. 23
  1841. 24
  1842. 25
  1843. 26
  1844. 实例072:创建链表
  1845. 题目 创建一个链表。
  1846. 程序分析 原文不太靠谱。
  1847. class Node:
  1848. def __init__(self, data):
  1849. self.data = data
  1850. self.next = None
  1851. def get_data(self):
  1852. return self.data
  1853. class List:
  1854. def __init__(self, head):
  1855. self.head = head
  1856. def is_empty(self):
  1857. return self.get_len() == 0
  1858. def get_len(self):
  1859. length = 0
  1860. temp = self.head
  1861. while temp is not None:
  1862. length += 1
  1863. temp = temp.next
  1864. return length
  1865. def append(self, node):
  1866. temp = self.head
  1867. while temp.next is not None:
  1868. temp = temp.next
  1869. temp.next = node
  1870. def delete(self, index):
  1871. if index < 1 or index > self.get_len():
  1872. print("给定位置不合理")
  1873. return
  1874. if index == 1:
  1875. self.head = self.head.next
  1876. return
  1877. temp = self.head
  1878. cur_pos = 0
  1879. while temp is not None:
  1880. cur_pos += 1
  1881. if cur_pos == index-1:
  1882. temp.next = temp.next.next
  1883. temp = temp.next
  1884. def insert(self, pos, node):
  1885. if pos < 1 or pos > self.get_len():
  1886. print("插入结点位置不合理")
  1887. return
  1888. temp = self.head
  1889. cur_pos = 0
  1890. while temp is not Node:
  1891. cur_pos += 1
  1892. if cur_pos == pos-1:
  1893. node.next = temp.next
  1894. temp.next =node
  1895. break
  1896. temp = temp.next
  1897. def reverse(self, head):
  1898. if head is None and head.next is None:
  1899. return head
  1900. pre = head
  1901. cur = head.next
  1902. while cur is not None:
  1903. temp = cur.next
  1904. cur.next = pre
  1905. pre = cur
  1906. cur = temp
  1907. head.next = None
  1908. return pre
  1909. def print_list(self, head):
  1910. init_data = []
  1911. while head is not None:
  1912. init_data.append(head.get_data())
  1913. head = head.next
  1914. return init_data
  1915. if __name__=='__main__':
  1916. head=Node('head')
  1917. link=List(head)
  1918. for i in range(10):
  1919. node=Node(i)
  1920. link.append(node)
  1921. print(link.print_list(head))
  1922. 1
  1923. 2
  1924. 3
  1925. 4
  1926. 5
  1927. 6
  1928. 7
  1929. 8
  1930. 9
  1931. 10
  1932. 11
  1933. 12
  1934. 13
  1935. 14
  1936. 15
  1937. 16
  1938. 17
  1939. 18
  1940. 19
  1941. 20
  1942. 21
  1943. 22
  1944. 23
  1945. 24
  1946. 25
  1947. 26
  1948. 27
  1949. 28
  1950. 29
  1951. 30
  1952. 31
  1953. 32
  1954. 33
  1955. 34
  1956. 35
  1957. 36
  1958. 37
  1959. 38
  1960. 39
  1961. 40
  1962. 41
  1963. 42
  1964. 43
  1965. 44
  1966. 45
  1967. 46
  1968. 47
  1969. 48
  1970. 49
  1971. 50
  1972. 51
  1973. 52
  1974. 53
  1975. 54
  1976. 55
  1977. 56
  1978. 57
  1979. 58
  1980. 59
  1981. 60
  1982. 61
  1983. 62
  1984. 63
  1985. 64
  1986. 65
  1987. 66
  1988. 67
  1989. 68
  1990. 69
  1991. 70
  1992. 71
  1993. 72
  1994. 73
  1995. 74
  1996. 75
  1997. 76
  1998. 77
  1999. 78
  2000. 79
  2001. 80
  2002. 81
  2003. 82
  2004. 83
  2005. 84
  2006. 85
  2007. 86
  2008. 87
  2009. 实例073:反向输出链表
  2010. 题目 反向输出一个链表。
  2011. 程序分析 无。
  2012. class Node:
  2013. def __init__(self, data):
  2014. self.data = data
  2015. self.next = None
  2016. def get_data(self):
  2017. return self.data
  2018. class List:
  2019. def __init__(self, head):
  2020. self.head = head
  2021. def is_empty(self):
  2022. return self.get_len() == 0
  2023. def get_len(self):
  2024. length = 0
  2025. temp = self.head
  2026. while temp is not None:
  2027. length += 1
  2028. temp = temp.next
  2029. return length
  2030. def append(self, node):
  2031. temp = self.head
  2032. while temp.next is not None:
  2033. temp = temp.next
  2034. temp.next = node
  2035. def delete(self, index):
  2036. if index < 1 or index > self.get_len():
  2037. print("给定位置不合理")
  2038. return
  2039. if index == 1:
  2040. self.head = self.head.next
  2041. return
  2042. temp = self.head
  2043. cur_pos = 0
  2044. while temp is not None:
  2045. cur_pos += 1
  2046. if cur_pos == index-1:
  2047. temp.next = temp.next.next
  2048. temp = temp.next
  2049. def insert(self, pos, node):
  2050. if pos < 1 or pos > self.get_len():
  2051. print("插入结点位置不合理")
  2052. return
  2053. temp = self.head
  2054. cur_pos = 0
  2055. while temp is not Node:
  2056. cur_pos += 1
  2057. if cur_pos == pos-1:
  2058. node.next = temp.next
  2059. temp.next =node
  2060. break
  2061. temp = temp.next
  2062. def reverse(self, head):
  2063. if head is None and head.next is None:
  2064. return head
  2065. pre = head
  2066. cur = head.next
  2067. while cur is not None:
  2068. temp = cur.next
  2069. cur.next = pre
  2070. pre = cur
  2071. cur = temp
  2072. head.next = None
  2073. return pre
  2074. def print_list(self, head):
  2075. init_data = []
  2076. while head is not None:
  2077. init_data.append(head.get_data())
  2078. head = head.next
  2079. return init_data
  2080. if __name__=='__main__':
  2081. head=Node('head')
  2082. link=List(head)
  2083. for i in range(10):
  2084. node=Node(i)
  2085. link.append(node)
  2086. print(link.print_list(head))
  2087. print(link.print_list(link.reverse(head)))
  2088. 1
  2089. 2
  2090. 3
  2091. 4
  2092. 5
  2093. 6
  2094. 7
  2095. 8
  2096. 9
  2097. 10
  2098. 11
  2099. 12
  2100. 13
  2101. 14
  2102. 15
  2103. 16
  2104. 17
  2105. 18
  2106. 19
  2107. 20
  2108. 21
  2109. 22
  2110. 23
  2111. 24
  2112. 25
  2113. 26
  2114. 27
  2115. 28
  2116. 29
  2117. 30
  2118. 31
  2119. 32
  2120. 33
  2121. 34
  2122. 35
  2123. 36
  2124. 37
  2125. 38
  2126. 39
  2127. 40
  2128. 41
  2129. 42
  2130. 43
  2131. 44
  2132. 45
  2133. 46
  2134. 47
  2135. 48
  2136. 49
  2137. 50
  2138. 51
  2139. 52
  2140. 53
  2141. 54
  2142. 55
  2143. 56
  2144. 57
  2145. 58
  2146. 59
  2147. 60
  2148. 61
  2149. 62
  2150. 63
  2151. 64
  2152. 65
  2153. 66
  2154. 67
  2155. 68
  2156. 69
  2157. 70
  2158. 71
  2159. 72
  2160. 73
  2161. 74
  2162. 75
  2163. 76
  2164. 77
  2165. 78
  2166. 79
  2167. 80
  2168. 81
  2169. 82
  2170. 83
  2171. 84
  2172. 85
  2173. 86
  2174. 87
  2175. 88
  2176. 实例074:列表排序、连接
  2177. 题目 列表排序及连接。
  2178. 程序分析 排序可使用 sort() 方法,连接可以使用 + 号或 extend() 方法。
  2179. a=[2,6,8]
  2180. b=[7,0,4]
  2181. a.extend(b)
  2182. a.sort()
  2183. print(a)
  2184. 1
  2185. 2
  2186. 3
  2187. 4
  2188. 5
  2189. 实例075:不知所云
  2190. 题目 放松一下,算一道简单的题目。
  2191. 程序分析 鬼知道是什么。
  2192. if __name__ == '__main__':
  2193. for i in range(5):
  2194. n = 0
  2195. if i != 1: n += 1
  2196. if i == 3: n += 1
  2197. if i == 4: n += 1
  2198. if i != 4: n += 1
  2199. if n == 3: print (64 + i)
  2200. 1
  2201. 2
  2202. 3
  2203. 4
  2204. 5
  2205. 6
  2206. 7
  2207. 8
  2208. 实例076:做函数
  2209. 题目 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
  2210. 程序分析 无。
  2211. def peven(n):
  2212. i = 0
  2213. s = 0.0
  2214. for i in range(2,n + 1,2):
  2215. s += 1.0 / i
  2216. return s
  2217. def podd(n):
  2218. s = 0.0
  2219. for i in range(1, n + 1,2):
  2220. s += 1.0 / i
  2221. return s
  2222. def dcall(fp,n):
  2223. s = fp(n)
  2224. return s
  2225. if __name__ == '__main__':
  2226. n = int(input('input a number: '))
  2227. if n % 2 == 0:
  2228. sum = dcall(peven,n)
  2229. else:
  2230. sum = dcall(podd,n)
  2231. print (sum)
  2232. 1
  2233. 2
  2234. 3
  2235. 4
  2236. 5
  2237. 6
  2238. 7
  2239. 8
  2240. 9
  2241. 10
  2242. 11
  2243. 12
  2244. 13
  2245. 14
  2246. 15
  2247. 16
  2248. 17
  2249. 18
  2250. 19
  2251. 20
  2252. 21
  2253. 22
  2254. 23
  2255. 24
  2256. 实例077:遍历列表
  2257. 题目 循环输出列表
  2258. 程序分析 无。
  2259. l=['moyu','niupi','xuecaibichi','shengfaji','42']
  2260. for i in range(len(l)):
  2261. print(l[i])
  2262. 1
  2263. 2
  2264. 3
  2265. 实例078:字典
  2266. 题目 找到年龄最大的人,并输出。请找出程序中有什么问题。
  2267. 程序分析 无。
  2268. if __name__ == '__main__':
  2269. person = {"li":18,"wang":50,"zhang":20,"sun":22}
  2270. m = 'li'
  2271. for key in person.keys():
  2272. if person[m] < person[key]:
  2273. m = key
  2274. print ('%s,%d' % (m,person[m]))
  2275. 1
  2276. 2
  2277. 3
  2278. 4
  2279. 5
  2280. 6
  2281. 7
  2282. 8
  2283. 实例079:字符串排序
  2284. 题目 字符串排序。
  2285. 程序分析 无。
  2286. l=['baaa','aaab','aaba','aaaa','abaa']
  2287. l.sort()
  2288. print(l)
  2289. 1
  2290. 2
  2291. 3
  2292. 实例080:猴子分桃
  2293. 题目 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
  2294. 程序分析 无。
  2295. if __name__ == '__main__':
  2296. i = 0
  2297. j = 1
  2298. x = 0
  2299. while (i < 5) :
  2300. x = 4 * j
  2301. for i in range(0,5) :
  2302. if(x%4 != 0) :
  2303. break
  2304. else :
  2305. i += 1
  2306. x = (x/4) * 5 +1
  2307. j += 1
  2308. print(x)
  2309. for p in range(5):
  2310. x=(x-1)/5*4
  2311. print(x)
  2312. 1
  2313. 2
  2314. 3
  2315. 4
  2316. 5
  2317. 6
  2318. 7
  2319. 8
  2320. 9
  2321. 10
  2322. 11
  2323. 12
  2324. 13
  2325. 14
  2326. 15
  2327. 16
  2328. 17
  2329. 18
  2330. 实例081:求未知数
  2331. 题目 809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
  2332. 程序分析 无。
  2333. a = 809
  2334. for i in range(10,100):
  2335. b = i * a
  2336. if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100:
  2337. print(b,' = 800 * ', i, ' + 9 * ', i)
  2338. for i in range(10,100):
  2339. if 8*i>99 or 9*i<100:
  2340. continue
  2341. if 809*i==800*i+9*i:
  2342. print(i)
  2343. break
  2344. 1
  2345. 2
  2346. 3
  2347. 4
  2348. 5
  2349. 6
  2350. 7
  2351. 8
  2352. 9
  2353. 10
  2354. 11
  2355. 12
  2356. 13
  2357. 实例082:八进制转十进制
  2358. 题目 八进制转换为十进制
  2359. 程序分析 无。
  2360. n=eval('0o'+str(int(input('八进制输入:'))))
  2361. print(n)
  2362. 1
  2363. 2
  2364. 实例083:制作奇数
  2365. 题目 求07所能组成的奇数个数。
  2366. 程序分析
  2367. 组成1位数是4个。1,3,5,7结尾
  2368. 组成2位数是7*4个。第一位不能为0
  2369. 组成3位数是7*8*4个。中间随意
  2370. 组成4位数是7*8*8*4个。
  2371. if __name__ == '__main__':
  2372. sum = 4
  2373. s = 4
  2374. for j in range(2,9):
  2375. print (sum)
  2376. if j <= 2:
  2377. s *= 7
  2378. else:
  2379. s *= 8
  2380. sum += s
  2381. print('sum = %d' % sum)
  2382. 1
  2383. 2
  2384. 3
  2385. 4
  2386. 5
  2387. 6
  2388. 7
  2389. 8
  2390. 9
  2391. 10
  2392. 11
  2393. 实例084:连接字符串
  2394. 题目 连接字符串。
  2395. 程序分析 无。
  2396. delimiter = ','
  2397. mylist = ['Brazil', 'Russia', 'India', 'China']
  2398. print(delimiter.join(mylist))
  2399. 1
  2400. 2
  2401. 3
  2402. 实例085:整除
  2403. 题目 输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。
  2404. 程序分析 999999 / 13 = 76923
  2405. if __name__ == '__main__':
  2406. zi = int(input('输入一个数字:'))
  2407. n1 = 1
  2408. c9 = 1
  2409. m9 = 9
  2410. sum = 9
  2411. while n1 != 0:
  2412. if sum % zi == 0:
  2413. n1 = 0
  2414. else:
  2415. m9 *= 10
  2416. sum += m9
  2417. c9 += 1
  2418. print ('%d 个 9 可以被 %d 整除 : %d' % (c9,zi,sum))
  2419. r = sum / zi
  2420. print ('%d / %d = %d' % (sum,zi,r))
  2421. 1
  2422. 2
  2423. 3
  2424. 4
  2425. 5
  2426. 6
  2427. 7
  2428. 8
  2429. 9
  2430. 10
  2431. 11
  2432. 12
  2433. 13
  2434. 14
  2435. 15
  2436. 16
  2437. 实例086:连接字符串II
  2438. 题目 两个字符串连接程序。
  2439. 程序分析 无。
  2440. a='guangtou'
  2441. b='feipang'
  2442. print(b+a)
  2443. 1
  2444. 2
  2445. 3
  2446. 实例087:访问类成员
  2447. 题目 回答结果(结构体变量传递)。
  2448. 程序分析 无。
  2449. if __name__ == '__main__':
  2450. class student:
  2451. x = 0
  2452. c = 0
  2453. def f(stu):
  2454. stu.x = 20
  2455. stu.c = 'c'
  2456. a= student()
  2457. a.x = 3
  2458. a.c = 'a'
  2459. f(a)
  2460. print(a.x,a.c)
  2461. 1
  2462. 2
  2463. 3
  2464. 4
  2465. 5
  2466. 6
  2467. 7
  2468. 8
  2469. 9
  2470. 10
  2471. 11
  2472. 12
  2473. 实例088:打印星号
  2474. 题目 读取7个数(150)的整数值,每读取一个值,程序打印出该值个数的*。
  2475. 程序分析 无。
  2476. for i in range(3):
  2477. print('*'*int(input('input a number: ')))
  2478. 1
  2479. 2
  2480. 实例089:解码
  2481. 题目 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
  2482. 程序分析 无。
  2483. n=input()
  2484. n = str(n)
  2485. a=[]
  2486. for i in range(4):
  2487. a.append((int(n[i])+5)%10)
  2488. a[0],a[3]=a[3],a[0]
  2489. a[1],a[2]=a[2],a[1]
  2490. print ("".join('%s' %s for s in a))
  2491. 1
  2492. 2
  2493. 3
  2494. 4
  2495. 5
  2496. 6
  2497. 7
  2498. 8
  2499. 9
  2500. 实例090:列表详解
  2501. 题目 列表使用实例。
  2502. 程序分析 无。
  2503. #list
  2504. #新建列表
  2505. testList=[10086,'中国移动',[1,2,4,5]]
  2506. #访问列表长度
  2507. print (len(testList) )
  2508. #到列表结尾
  2509. print (testList[1:])
  2510. #向列表添加元素
  2511. testList.append('i\'m new here!')
  2512. print (len(testList) )
  2513. print (testList[-1] )
  2514. #弹出列表的最后一个元素
  2515. print (testList.pop(1) )
  2516. print (len(testList) )
  2517. print (testList )
  2518. #list comprehension
  2519. #后面有介绍,暂时掠过
  2520. matrix = [[1, 2, 3],
  2521. [4, 5, 6],
  2522. [7, 8, 9]]
  2523. print (matrix )
  2524. print (matrix[1] )
  2525. col2 = [row[1] for row in matrix]#get a column from a matrix
  2526. print (col2 )
  2527. col2even = [row[1] for row in matrix if row[1] % 2 == 0]#filter odd item
  2528. print (col2even)
  2529. 1
  2530. 2
  2531. 3
  2532. 4
  2533. 5
  2534. 6
  2535. 7
  2536. 8
  2537. 9
  2538. 10
  2539. 11
  2540. 12
  2541. 13
  2542. 14
  2543. 15
  2544. 16
  2545. 17
  2546. 18
  2547. 19
  2548. 20
  2549. 21
  2550. 22
  2551. 23
  2552. 24
  2553. 25
  2554. 26
  2555. 27
  2556. 28
  2557. 实例091:time模块
  2558. 题目 时间函数举例1
  2559. 程序分析 无。
  2560. if __name__ == '__main__':
  2561. import time
  2562. print (time.ctime(time.time()))
  2563. print (time.asctime(time.localtime(time.time())))
  2564. print (time.asctime(time.gmtime(time.time())))
  2565. 1
  2566. 2
  2567. 3
  2568. 4
  2569. 5
  2570. 实例092:time模块II
  2571. 题目 时间函数举例2
  2572. 程序分析 如何浪费时间。
  2573. if __name__ == '__main__':
  2574. import time
  2575. start = time.time()
  2576. for i in range(3000):
  2577. print(i)
  2578. end = time.time()
  2579. print (end - start)
  2580. 1
  2581. 2
  2582. 3
  2583. 4
  2584. 5
  2585. 6
  2586. 7
  2587. 8
  2588. 实例093:time模块III
  2589. 题目 时间函数举例3
  2590. 程序分析 如何浪费时间。
  2591. if __name__ == '__main__':
  2592. import time
  2593. start = time.clock()
  2594. for i in range(100):
  2595. print(i)
  2596. end = time.clock()
  2597. print('different is %6.3f' % (end - start))
  2598. 1
  2599. 2
  2600. 3
  2601. 4
  2602. 5
  2603. 6
  2604. 7
  2605. 实例094:time模块IV
  2606. 题目 时间函数举例4
  2607. 程序分析 如何浪费时间。
  2608. if __name__ == '__main__':
  2609. import time
  2610. import random
  2611. play_it = input('do you want to play it.(\'y\' or \'n\')')
  2612. while play_it == 'y':
  2613. c = input('input a character:\n')
  2614. i = random.randint(0,2**32) % 100
  2615. print ('please input number you guess:\n')
  2616. start = time.clock()
  2617. a = time.time()
  2618. guess = int(input('input your guess:\n'))
  2619. while guess != i:
  2620. if guess > i:
  2621. print('please input a little smaller')
  2622. guess = int(input('input your guess:\n'))
  2623. else:
  2624. print('please input a little bigger')
  2625. guess = int(input('input your guess:\n'))
  2626. end = time.clock()
  2627. b = time.time()
  2628. var = (end - start) / 18.2
  2629. print (var)
  2630. # print 'It took you %6.3 seconds' % time.difftime(b,a))
  2631. if var < 15:
  2632. print ('you are very clever!')
  2633. elif var < 25:
  2634. print ('you are normal!')
  2635. else:
  2636. print ('you are stupid!')
  2637. print ('Congradulations')
  2638. print ('The number you guess is %d' % i)
  2639. play_it = input('do you want to play it.')
  2640. 1
  2641. 2
  2642. 3
  2643. 4
  2644. 5
  2645. 6
  2646. 7
  2647. 8
  2648. 9
  2649. 10
  2650. 11
  2651. 12
  2652. 13
  2653. 14
  2654. 15
  2655. 16
  2656. 17
  2657. 18
  2658. 19
  2659. 20
  2660. 21
  2661. 22
  2662. 23
  2663. 24
  2664. 25
  2665. 26
  2666. 27
  2667. 28
  2668. 29
  2669. 30
  2670. 31
  2671. 32
  2672. 33
  2673. 实例095:转换时间格式
  2674. 题目 字符串日期转换为易读的日期格式。
  2675. 程序分析 看看就得了,dateutil是个第三方库。
  2676. from dateutil import parser
  2677. dt = parser.parse("Aug 28 2015 12:00AM")
  2678. print (dt)
  2679. 1
  2680. 2
  2681. 3
  2682. 实例096:计算复读次数
  2683. 题目 计算字符串中子串出现的次数。
  2684. 程序分析 无。
  2685. s1='xuebixuebixuebixuebixuebixuebixuebixue'
  2686. s2='xuebi'
  2687. print(s1.count(s2))
  2688. 1
  2689. 2
  2690. 3
  2691. 实例097:磁盘写入
  2692. 题目 从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。
  2693. 程序分析 无。
  2694. if __name__ == '__main__':
  2695. from sys import stdout
  2696. filename = input('输入文件名:\n')
  2697. fp = open(filename,"w")
  2698. ch = input('输入字符串:\n')
  2699. while ch != '#':
  2700. fp.write(ch)
  2701. stdout.write(ch)
  2702. ch = input('')
  2703. fp.close()
  2704. 1
  2705. 2
  2706. 3
  2707. 4
  2708. 5
  2709. 6
  2710. 7
  2711. 8
  2712. 9
  2713. 10
  2714. 实例098:磁盘写入II
  2715. 题目 从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。
  2716. 程序分析 无。
  2717. if __name__ == '__main__':
  2718. fp = open('test.txt','w')
  2719. string = input('please input a string:\n')
  2720. string = string.upper()
  2721. fp.write(string)
  2722. fp = open('test.txt','r')
  2723. print (fp.read())
  2724. fp.close()
  2725. 1
  2726. 2
  2727. 3
  2728. 4
  2729. 5
  2730. 6
  2731. 7
  2732. 8
  2733. 实例099:磁盘读写
  2734. 题目 有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。
  2735. 程序分析 无。
  2736. if __name__ == '__main__':
  2737. import string
  2738. fp = open('test1.txt')
  2739. a = fp.read()
  2740. fp.close()
  2741. fp = open('test2.txt')
  2742. b = fp.read()
  2743. fp.close()
  2744. fp = open('test3.txt','w')
  2745. l = list(a + b)
  2746. l.sort()
  2747. s = ''
  2748. s = s.join(l)
  2749. fp.write(s)
  2750. fp.close()
  2751. 1
  2752. 2
  2753. 3
  2754. 4
  2755. 5
  2756. 6
  2757. 7
  2758. 8
  2759. 9
  2760. 10
  2761. 11
  2762. 12
  2763. 13
  2764. 14
  2765. 15
  2766. 16
  2767. 17
  2768. 实例100:列表转字典
  2769. 题目 列表转换为字典。
  2770. 程序分析 无。
  2771. i = ['a', 'b']
  2772. l = [1, 2]
  2773. print (dict(zip(i,l)))
  2774. ————————————————
  2775. 版权声明:本文为CSDN博主「超级大黄狗Shawn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
  2776. 原文链接:https://blog.csdn.net/weixin_41084236/article/details/81564963

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/539833
推荐阅读
相关标签
  

闽ICP备14008679号