Python3---练习题目

第一题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
Python3 练习案例
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
程序源代码:
'''

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if(i != k) and (i != j) and (j != k):
                print(i,j,k)

第二题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
'''

i = int(input("请输入净利润:"))
arr = [1000000,600000,400000,200000,100000]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
    if i > arr[idx]:
        r += (i - arr[idx]) * rat[idx]
        print( (i - arr[idx]) * rat[idx] )
        i = arr[idx]
print(r)

第三题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

程序分析:在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
'''

import math
'''
math模块为浮点运算提供了对底层C函数库的访问:
    1;sqrt() 方法返回数字x的平方根。
'''
for i in range(10000):
    #将循环数值转化为整数型
    x = int(math.sqrt(i + 100))
    y = int(math.sqrt(i + 268))
    if (x * x == i+ 100) and ( y * y == i + 268):
        print(i)

第四题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天:
'''

year = int(input("请输入年份:\n"))
month = int(input("请输入月份:\n"))
day = int(input("请输入天数:\n"))

#Python的元组与列表类似,不同之处在于元组的元素不能修改。
months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 < month < 12:
    sun = months[month - 1]
else:
    print("Date error")

sun += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sun += 1

print("it is the %dth day." % sun)

第五题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,
如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
'''

l = []
for i in range(3):
    x = int(input("integer: \n"))
    l.append(x)
l.sort()
print(l)
'''
1;序列是Python中最基本的数据结构.
2;sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
3;append()函数会将所有的参数视为一个列表元素插入到列表尾部
'''

第六题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:斐波那契数列。
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
'''

def fib(n):
    if n == 1 or n == 2:
        return 1
    return fib(n -1)+fib(n-2)

print(fib(10))

第七题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:将一个列表的数据复制到另一个列表中。
程序分析:使用列表[:]。
'''

a = [1,3,'a',True]
b = a[:]
print(b)

第八题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:输出9*9乘法口诀表。
程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
'''

for i in range(1,10):
    for j in range(1,10):
        result = i * j
        print("%d * %d = % -3d" %(i,j,result))
    print("")

第九题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:暂停一秒输出。
程序分析:无。
'''

import time
#dict.items返回可遍历的(键, 值) 元组数组。
MyD = {1:'A',2:'B'}
for key,value in dict.items(MyD):
    print(key,value)
    time.sleep(1) #暂停1秒

第十题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
'''

f1 = 1
f2 = 1

for i in range(1,21):
    print("%12d %12d" % (f1,f2))
    if (i % 2) == 0:
        print("")
    f1 = f1 + f2
    f2 = f1 + f2

第十一题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
'''

from math import sqrt
from sys import stdout
'''
1;sqrt() 方法返回数字x的平方根。
2;sys该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。
3;stdout用于print()和表达式的输出和 提示input();
'''

h = 0
leap = 1
for m in range(101,201):
    k = int(sqrt(m + 1))
    for i in range(2,k+1):
        if m % i == 0:
            leap = 0
            break
    if leap == 1:
        print("%-4d" % m)
        h += 1
        if h % 10 == 0:
            print("")
    leap = 1

第十二题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
'''

for n in range(100,1000):
    i = n / 100 # 提取百位数字
    j = n / 10 % 10 # 提取出十位数字
    k = n % 10 #提取个位数字
    if n == i ** 3 + j ** 3 + k ** 3:
        print(n)

第十三题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
'''

from sys import stdout

n = int(input("input number: \n"))
print("n = %d" % n)

for i in range(2 , n + 1):
    while n != i:
        if n % i == 0:
            stdout.write(str(i))
            stdout.write("*")
            n = n / i
        else:
            break
print("%d" % n)

第十四题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

程序分析:程序分析:(a>b)?a:b这是条件运算符的基本例子。
'''

score = int(input("input score: \n"))

if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'

print("%d belongs to %s " % (score,grade))

 第十五题:

# -*- coding:utf-8 -*-
#!/usr/bin/python

import datetime

if __name__ == "__main__":
    # 输出今日日期,格式为dd/mm/yyyy。 更多选项可以查看strftime()方法
    print(datetime.date.today().strftime('%d/%m/%Y'))
    # 创建日期对象
    Date = datetime.date(1941,1,5)
    print(Date.strftime('%d/%m/%Y'))
    #日期算术运算
    DateNext = Date + datetime.timedelta(days=4)
    print(DateNext)
    #日期替换
    DateT = Date.replace(year=Date.year + 1)
    print(DateT)

第十六题:

# -*- coding:utf-8 -*-
#!/usr/bin/python

import string

'''
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用while语句,条件为输入的字符不为'\n'。
'''
'''
Python标准库 - 文本处理服务 - string库
'''
if __name__ == "__main__":
    s = str(input('input a string: \n'))
    letters = 0
    space = 0
    digit = 0
    others = 0
    for c in s:
        if c.isalpha():
            letters += 1
        elif c.isspace():
            space += 1
        elif c.isdigit():
            digit += 1
        else:
            others += 1

    print("char = %d\n space = %d\n digit = %d\n others = %d\n" % (letters,space,digit,others))

第十七题:

# -*- coding:utf-8 -*-
#!/usr/bin/python


'''
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。
'''

Tn = 0
Sn = []

n = int(input('n = :\n'))
a = int(input('a = :\n'))

for count in range(n):
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
    print(Tn)
#reduce() 函数会对参数序列中元素进行累积。
Sn = reduce(lambda x,y : x + y,Sn)
print(Sn)

第十八题:

# -*- coding:utf-8 -*-
#!/usr/bin/python


'''
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
'''

from sys import stdout

for j in range(2,1001):
    k = []
    n = -1
    s = j
    for i in range(1,j):
        if j % i == 0 :
            n += 1
            s -= i
            k.append(i)

    if s == 0:
        print(j)
        for i in range(n):
            stdout.write((str(k[i])))
            stdout.write(' ')
        print(k[n])

第十九题:

# -*- coding:utf-8 -*-
#!/usr/bin/python


'''
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
'''

Sn = 100.0

Hn = Sn / 2

for n in range(2,11):
    Sn += 2 * Hn
    Hn /= 2

print("Total of road is %f" % Sn)
print("The tenth is %f meter" % Hn)

第二十题:

# -*- coding:utf-8 -*-
#!/usr/bin/python


'''
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

程序分析:采取逆向思维的方法,从后往前推断。
'''

x2 = 1

for day in range(9 , 0 , -1):
    print(day)
    x1 = (x2 + 1) * 2
    x2 = x1

print(x1)

 第二十一题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。
有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
'''

'''
a 可能对应 y , z 
c 对应 y  -----  a 对应 z ---- b 对应  x 
'''
'''
函数说明:
    1;ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,
它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,
如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
    2;chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
问题分析:
    首先我们通过for 循环分别提取出代表三个x , y ,Z 不同的字母的变量,接下来我们根据条件(a说他不和x比,c说他不和x,z比)来设定if语句。
'''

for i in range(ord('x'),ord('z') + 1):
    for j in range(ord('x'),ord('z') + 1):
        if i != j:
            for k in range(ord('x'),ord('z') + 1):
                if(i != k) and (j != k):
                    if(i != ord('x')) and (k != ord('x')) and (k != ord('z')):
                        print("order is\n a -- %s\n b -- %s\n c -- %s" % (chr(i),chr(j),chr(k)))

第二十二题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:打印出如下图案(菱形):
   *
  ***
 *****
*******
 *****
  ***
   *
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
前四行规律: 第i行 : (2-i+1)个空格 + (2*i+1)一个*
第0行 : 3个空格 + 1一个*
第1行 : 2个空格 + 3一个*
第2行 : 1个空格 + 4一个*
第3行 : 0个空格 + 7一个*
后四行规律:第i行 : (i+1)个空格 + (4 - 2*i + i)一个*
第0行 : 1个空格 + 5一个*
第1行 : 2个空格 + 3一个*
第2行 : 3个空格 + 1一个*
'''

from sys import stdout

for i in range(4): #提取行数,i 分别表示 (0,1,2,3)
    print(i)
    for j in range(2 - i + 1):
        stdout.write(' ')
    for k in range(2 * i + 1):
        stdout.write('*')
    print

for i in range(3):
    print(i)
    for j in range(i + 1):
        stdout.write(' ')
    for k in range(4 - 2 * i + 1):
        stdout.write('*')

    print

第二十三题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
思路解析:
    1;使用变量分别表示分子,分母。整个需要钱20项的和,那么分子,分母的规律变化需要循环20次。
    2;前面想加的和设定一个变量存储他们的值
'''

a = 2.0
b = 1.0
s = 0

for i in range(1,21):
    s += a / b
    t = a
    a = a + b
    b = t
print(s)

第二十四题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:求1+2!+3!+...+20!的和。
程序分析:参考23题
'''

n = 0
s = 0
t = 1

for n in range(1,21):
    t *= n
    s += t
print("1! + 2! + 3! + ... + 20! = %d" % s)

 第二十五题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:利用递归方法求5!。
程序分析:递归公式:fn=fn_1*4!
'''

def fact(j):
    sum = 0
    if j == 0:
        sum = 1
    else:
        sum = j * fact(j - 1)
    return sum

for i in range(5):
    print("%d! = %d" % (i,fact(i)))

第二十六题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
利用字符串切片提取字符来操作
'''

def output(s,l):
    if l == 0:
        return
    print(s[l-1])
    output(s,l-1)

s = input('Input a string : ')
l = len(s)
output(s,l)

第二十七题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,
他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。请问第五个人多大?
'''

def age(n):
    if n == 1: c = 10
    else:
        c = age(n-1) + 2
    return c

print(age(5))

第二十八题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析:学会分解出每一位数。
'''

x = int(input("请输入一个数:\n"))

a = x // 10000 # 提取第五位数字
b = x % 10000 // 1000 #提取第四位数字
c = x % 1000 // 100 # 提取第三位数字
d = x % 100 // 10 # 提取第二位数字
e = x % 10  # 提取第一位数字

if a != 0:
    print("5位数:",e,d,c,b,a)
elif b != 0:
    print("4位数:", e, d, c, b)
elif c != 0:
    print("3位数:", e, d, c)
elif d != 0:
    print("2位数:", e, d)
elif e != 0:
    print("1位数:", e)

第二十九题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
12321
'''

a = int(input("请输入一个数字:\n"))
x = str(a)
flag = True

for i in range(len(x)//2):
    if x[i] != x[-i - 1]:
        flag = False
        break

if flag:
    print("%d 是一个回文数!" % a)
else:
    print("%d 不是一个回文数!" % a)

第三十题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。。
'''

letter = input("please input:")
# while letter  != 'Y':
if letter == 'S':
    print('please input second letter:')
    letter = input("please input:")
    if letter == 'a':
        print('Saturday')
    elif letter == 'u':
        print('Sunday')
    else:
        print('data error')

elif letter == 'F':
    print('Friday')

elif letter == 'M':
    print('Monday')

elif letter == 'T':
    print('please input second letter')
    letter = input("please input:")

    if letter == 'u':
        print('Tuesday')
    elif letter == 'h':
        print('Thursday')
    else:
        print('data error')

elif letter == 'W':
    print('Wednesday')
else:
    print('data error')

第三十一题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:按相反的顺序输出列表的值。
'''
'''
解析:
[ 1 2 3 4 5 ]
print(a[-1]) ###取最后一个元素
[5]
print(a[:-1])  ### 除了最后一个取全部
[ 1 2 3 4 ]
print(a[::-1]) ### 取从后向前(相反)的元素
[ 5 4 3 2 1 ]
print(a[2::-1]) ### 取从下标为2的元素翻转读取
[ 3 2 1 ]
'''

a = ['one', 213 , True ]
for i in a[::-1]:
    print(i)

第三十二题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:按逗号分隔列表。
函数解析:
    1;Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
'''

L = [1,2,3,"ONE",True,{'A':123}]
S1 = ','.join(str(n) for n in L)
S2 = '666'.join(str(n) for n in L)
print(S1)
print(S2)

第三十三题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:练习函数调用。
'''

def hello_world():
    print("hello world")

def three_hellos():
    for i in range(3):
        hello_world()

if __name__ == "__main__":
    three_hellos()

第三十四题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:文本颜色设置。

程序分析:无。
'''

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)

第三十五题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:求100之内的素数。
'''
from math import sqrt
'''
函数解析:
    1;sqrt() 方法返回数字x的平方根。
'''
if __name__ == "__main__":
    N = 100
    a = range(0,N)
    for i in range(2,int(sqrt(N))):
        for j in range(i+1 , N):
            if (a[i] != 0) and (a[j] != 0):
                if a[i] % a[j] == 0:
                    a[j] = 0

    print
    for i in range(2,N):
        if a[i] != 0:
            print("%5d" % a[i])
            if (i - 2) % 10 == 0:
                print

第三十六题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
'''

if __name__ == "__main__":
    N = 10
    # input data
    print("please input ten num:\n")
    l = []
    for i in range(N):
        l.append(int(input("input a number:\n")))
    print
    for i in range(N):
        print(l[i])
    print

    # sort tem num
    for i in range(N - 1):
        min = i
        for j in range(i + 1 , N):
            if l[min] > l[j] : min = j
        l[i],l[min] = l[min],l[i]

    print("after sorted")
    for i in range(N):
        print(l[i])

第三十七题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:求一个3*3矩阵对角线元素之和。

程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
'''

if __name__ == "__main__":
    a = []
    sum = 0.0
    for i in range(3):
        a.append([])
        for j in range(3):
            a[i].append(float(input("input num:\n")))
    print(a)
    for i in range(3):
        sum += a[i][i]

    print(sum)

第三十八题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
'''

if __name__ == "__main__":
    # 方案一:
    a = [1,2,3,4,5,6,7,8,9,0]
    print("original list is:")
    for i in range(len(a)):
        print(a[i])

    number = int(input("insert a new number: \n"))
    end = a[9]
    if number > end:
        a.append(number)
        #a[10] = number
    else:
        for i in range(10):
            if a[i] > number:
                temp1 = a[i]
                a[i] = number
                for j in range(i + 1, 11):
                    temp2 = a[j]
                    a[j] = temp1
                    temp1 = temp2
                break

    for i in range(11):
        print(a[i])

第三十九题:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:将一个数组逆序输出。

程序分析:用第一个与最后一个交换。
'''

if __name__ == "__main__":
    a = [9,3,4,6,1]
    N = len(a)

    print(a)
    for i in range(len(a) // 2):
        a[i],a[N -i -1] = a[N -i -1],a[i]
    print(a)

 第四十题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:模仿静态变量的用法。
'''
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()

第四十一题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:学习使用auto定义变量的用法。
程序分析:没有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()

第四十二题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:模仿静态变量(static)另一案例。
程序分析:演示一个python作用域使用方法
'''

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()

        

第四十三题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:统计 1 到 100 之和。
'''

tmp = 0
for i in range(1,101):
    tmp += i

print("The sum is %d" % tmp)

第四十四题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
求输入数字的平方,如果平方运算后小于 50 则退出。
'''

TURE = 1
FALSE = 0
def SQ(x):
    return x * x

print("如果输入的数字小于 50 ,程序将停止运行。")
again = 1
while again:
    num = int(input("Please input number: "))
    print("运算结果为%d" % (SQ(num)))
    if num >= 50:
        again = TURE
    else:
        again = FALSE

第四十五题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:两个变量值互换。
'''

def exchange(a,b):
    a,b = b,a
    return (a,b)

if __name__ == "__main__":
    x = 10
    y = 20
    print("x = %d , y = %d" % (x,y))
    x,y = exchange(x,y)
    print("x = %d , y = %d" % (x,y))

第四十六题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:数字比较。
'''

if __name__ == "__main__":
    i = 10
    j = 20
    if i > j:
        print("%d 大于 %d" % (i,j))
    elif i == j:
        print("%d 等于 %d" % (i, j))
    elif i < j:
        print("%d 小于 %d" % (i, j))
    else:
        print("未知")

第四十七题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:使用lambda来创建匿名函数。
'''

MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y
MINIMUM = lambda x,y : (x > y) * y + (x < y) * x

if __name__ == "__main__":
    a = 10
    b = 20
    print("The largar one is %d" % MAXIMUM(a,b))
    print("The lower one is %d" % MINIMUM(a, b))

第四十八题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:输出一个随机数。
程序分析:使用 random 模块。
'''

import random

print(random.uniform(10,20))

 第四十九题:

#! /usr/bin/python
# -*- coding: UTF-8 -*-

'''
题目:学习使用按位与 & 。
程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1。
'''

if __name__ == "__main__":
    a = 77
    b = a & 3
    print("a & b = %d" % b)
    b &= 7
    print("a & b = %d" % b)

 

posted @ 2020-03-27 13:34  天象独行  阅读(634)  评论(0编辑  收藏  举报