python经典练习100例(31~50)

目录

31. 输入字母判断是星期几

32. 翻转列表

33. 分割列表

34. 联系函数调用

35. 文本颜色设置

36. 求100之内的素数

37. 排序

38. 求矩阵主对角线元素之和

39. 数组中插入元素

40. 将一个数组逆序输出

41. 模仿静态变量的用法

42. 学习使用auto定义变量的用法

43. 模仿静态变量(static)

44.  Python 两个矩阵相加

45. 统计 1 到 100 之和

46. 求数字的平方

47. 两个变量值互换

48. 数字比较

49. 使用lambda来创建匿名函数

50. 输出一个随机数


31. 输入字母判断是星期几

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

# coding:UTF-8

# Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

c1 = raw_input("plz input a char, we will tell you the weekday: ")
if c1 == 'M' or c1 == 'm':
    print 'Monday'
elif c1 == 'T' or c1 == 't':
    c2 = raw_input("you should tell me the second char: ")
    if c2 == 'U' or c2 ==  'u':
        print 'Tuesday'
    elif c2 == 'H' or c2 ==  'h':
        print 'Thursday'
    else :
        print 'wrong chars'
elif c1 == 'W' or c1 == 'w':
    print 'Wednesday'
elif c1 == 'F' or c1 == 'f':
    print 'Friday'
elif c1 == 's' or c1 == 'S':
    c2 = raw_input("you should tell me the second char: ")
    if c2 == 'U' or c2 ==  'u':
        print 'Sunday'
    elif c2 == 'a' or c2 ==  'A':
        print 'Saturday'
    else :
        print 'wrong chars'
else :
    print 'wrong chars'

32. 翻转列表

题目:按相反的顺序输出列表的值。

# coding: UTF-8

l = [1,2,3,4,5,6,7,8,9]
for i in l:
    print i,
print
for i in range(len(l)-1, -1, -1):
    print l[i],
print
for i in l[::-1]:
    print i,
print

# list[::-1] 翻转列表
print l[::-1]
print l[2::-1]
print l[:3][::-1]

33. 分割列表

题目:按逗号分隔列表。

join()方法

# coding: UTF-8

import sys

l = [1,2,3,4,5]
for i in l[:-1]:
    sys.stdout.write(str(i))
    sys.stdout.write(',')
sys.stdout.write(str(l[-1]))
print

# join()方法用于将序列中的元素以指定的字符连接生产一个新的字符串。
s1 = ','.join(str(n) for n in l)
l2 = ['1','2','3']
s2 = ','.join(l2)
print s1
print s2

34. 联系函数调用

题目:练习函数调用。

# coding: UTF-8

def hello_world():
    print 'hello world'

def three_hellos():
    for i in range(3):
        hello_world()
if __name__ == '__main__':
    three_hellos()

35. 文本颜色设置

题目:文本颜色设置。

# 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

print('\033[92m hello \033[0m')
print '\033[91m world \033[0m'

36. 求100之内的素数

 题目:求100之内的素数。

# coding: UTF-8

from math import sqrt

def is_sushu(n):
    for j in range(2, int(sqrt(n))+1):
        if n % j == 0:
            return False
    return True

if __name__ == '__main__':
    for i in range(2, 101):
        if is_sushu(i):
           print i

37. 排序

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

# coding: UTF-8

if __name__ == '__main__':
    print "plz input ten number and sort them: "
    l = []
    for i in range(10):
        l.append(input('the %d num: '%(i+1)))
    l.sort()
    print l

38. 求矩阵主对角线元素之和

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

# coding: UTF-8

l1 = [0]*3
l2 = [0]*3
l3 = [0]*3
l = [l1, l2, l3]
sum = 0
for i in range(3):
    for j in range(3):
        l[i][j] = input('please input a number: ')
        if i == j:
            sum += l[i][j]

for i in range(3):
    print l[i]
print l
print sum

39. 数组中插入元素

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

# coding: UTF-8

l = [1, 5, 9, 10, 15]
print 'before insert: ', l
num = input("pls input a num: ")
# 0从大到小, 1从小到大, 2是相等
flag = -1

for i in range(4):
    if l[i]>l[i+1]:
        flag = 0
        break
    elif l[i]<l[i+1]:
        flag = 1
        break
    if i == 3 and l[i] == l[i+1]:
        flag = 2

if flag == 2:
    l.append(num)
elif flag == 1:
    for i in range(5):
        if num <= l[i]:
            l.insert(i, num)
            break
    if i == 4 and l[4] <> num:
        l.append(num)
elif flag == 0:
    for i in range(5):
        if num >= l[i]:
            l.insert(i, num)
            break
    if i == 4 and l[4] <> num:
        l.append(num)
else:
    print 'error'

print 'after insert: ',l

40. 将一个数组逆序输出

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

# coding: UTF-8

l = []
print 'plz input 5 number:'
for i in range(5):
    l.append(float(raw_input("plz input a num")))
print l
l1 = l[::-1]
l2 = l.reverse()  #none, reverse()是就地翻转,没有返回值
l3 = list(reversed(l))   # reversed()返回的是一个迭代器,不是list,需要list转换一下
print l, l1, l2, l3

41. 模仿静态变量的用法

题目:模仿静态变量的用法。

# coding: UTF-8

def func():
    var = 0
    print 'var = %d' % var
    var += 1

if __name__ == '__main__':
    for i in range(3):
        func()

# 类的属性
class Static:
    StaticVar = 5
    def func(self):
        self.StaticVar += 1
        print self.StaticVar

print Static.StaticVar
a = Static()
for i in range(3):
    a.func()

print Static.StaticVar

42. 学习使用auto定义变量的用法

题目:学习使用auto定义变量的用法。

# coding: UTF-8

'''
C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。
四种存储类别说明符有两种存储期:自动存储期和静态存储期。
其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。

在函数内部定义的变量成为局部变量。在某些C语言教材中,局部变量称为自动变量,这就与使用可选关键字auto定义局部变量这一作法保持一致。
局部变量仅由其被定义的模块内部的语句所访问。换言之,局部变量在自己的代码模块之外是不可知的。切记:模块以左花括号开始,以右花括号结束。
对于局部变量,要了解的最重要的东西是:它们仅存在于被定义的当前执行代码块中,即局部变量在进入模块时生成,在退出模块时消亡。
定义局部变量的最常见的代码块是函数。

整数变量x被定义了两次,一次在func1()中,一次在func2()中。func1()和func2()中的x互不相关。其原因是每个x作为局部变量仅在被定义的块内可知。
语言中包括了关键字auto,它可用于定义局部变量。但自从所有的非全局变量的缺省值假定为auto以来,auto就几乎很少使用了,
'''
# python 没有auto关键字.

num = 2
def func():
    num = 1
    print 'internal num = %d' % num
    num += 1

for i in range(3):
    print "num = %d" %num
    num += 1
    func()

43. 模仿静态变量(static)

题目:模仿静态变量(static)另一案例。

# coding: UTF-8

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()
        print 'inst.num = %d' %inst.nNum

44.  Python 两个矩阵相加

 题目:Python 两个矩阵相加
 两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:

# coding: UTF-8

a = [[],[],[]]
b = [[],[],[]]
c = [[],[],[]]

print 'Please input the first: '
for i in range(3):
    for j in range(3):
        a[i].append( input('plz input a:%d,%d: ' % (i,j)))

print 'Please input the second: '
for i in range(3):
    for j in range(3):
        b[i].append( input('plz input b[%d][%d]: ' % (i,j)))

for i in range(3):
    for j in range(3):
        c[i].append(a[i][j] + b[i][j])

print a, '+', b , " = "
print c

45. 统计 1 到 100 之和

题目:统计 1 到 100 之和。

# coding: UTF-8

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

46. 求数字的平方

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

# coding: UTF-8

a = input("plz input a : ")
b = a * a
print '%d power 2 is %d' %(a,b)
while b >= 50:
    a = input("plz input a : ")
    b = a * a
    print '%d power 2 is %d' %(a,b)

print '########################'

# python 不支持do ... while, 可用while+break来实现do...while

while True:
    a = input("plz input a : ")
    b = a * a
    print '%d power 2 is %d' %(a,b)
    if b < 50 :
        break

47. 两个变量值互换

题目:两个变量值互换。

# coding: UTF-8

x = input("plz input x: ")
y = int(raw_input('plz input y: '))

print 'you input x = %d, y = %d' %(x, y)

x,y=y,x
print ('after swap1: x = %d, y = %d' %(x, y))

t=x
x=y
y=t
print ('after swap2: x = %d, y = %d' %(x, y))

x=x+y
y=x-y
x=x-y
print ('after swap3: x = %d, y = %d' %(x, y))

x=x^y
y=x^y
x=x^y
print ('after swap4: x = %d, y = %d' %(x, y))


print '#########func#########'
# python 可以通过返回一个tuple类型,来间接达到返回多个值

def swap(x,y):
    return (y,x)

def swap1(x,y):
    x,y=y,x
    return (x,y)

def swap2(x,y):
    t=x
    x=y
    y=t
#    return (x,y)

def swap3(x,y):
    x=x+y
    y=x-y
    x=x-y
#    return (x,y)

def swap4(x,y):
    x=x^y
    y=x^y
    x=x^y
    return (x,y)

x,y = swap(x,y)
print ('after swap: x = %d, y = %d' %(x, y))

48. 数字比较

题目:数字比较。

# coding: UTF-8

x = input('x: ')
y = input('y: ')

if x < y:
    print '%d < %d' %(x, y)
elif x == y:
    print '%d = %d' %(x, y)
else:
    print '%d > %d' %(x, y)

49. 使用lambda来创建匿名函数

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

# coding: UTF-8

MAX = lambda x,y: x if x>y else y
MIN = lambda x,y: (x<y)*x + (y<x)*y

a = input('A: ')
b = input('B: ')

print 'the max is: %d' % MAX(a,b)
print 'the min is :%d' % MIN(a,b)

50. 输出一个随机数

题目:输出一个随机数。

# coding: UTF-8

# 使用random模块
import random

print random.uniform(1, 100)

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值