ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python100例

2021-02-02 17:01:16  阅读:408  来源: 互联网

标签:__ num range 实例 print 题目 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)))

标签:__,num,range,实例,print,题目,python100
来源: https://blog.csdn.net/name_kaili/article/details/113564905

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有