python代码:水仙花数+冒泡排序+猜数+完全数

练习1:

水仙花数:

'''
打印水仙花数
'''
import math
# 定义一个函数求取列表中的幂次方和
def pow3(list):
    sum = 0
    for i in list:
        sum += math.pow(int(i),3)
    return sum
def flower():           # 方法1 依次求取各个位数
    for i in range(100,1000):
        a = i // 1000    # 取最高位
        b = i //100 % 10 # 取百位
        c = i //10 % 10  # 取十位
        d = i % 10      # 取末位
        list = [a,b,c,d]
        if pow3(list) == i:
            print('100-1000以内的水仙花数有:%d'%i)
def flower2():              # 方法2: 数值转为list
    for i in range(100, 1000):
        list1 = list(str(i))
        if pow3(list1) == i:
            print('100-1000以内的水仙花数有:%d'%i)
def flower3(a,b):       # 限制范围(也可做成raw_input方式)
    for i in range(a,b):
        list = []     # 除法、求余数
        r = i
        while r:
            r,n = divmod(r,10)
            list.append(n)
        if pow3(list) == i:
            print('100-1000以内的水仙花数有:%d'%i)

练习2:

冒泡排序

'''
python: 冒泡排序
'''
class Sort(object):
    def __init__(self,lists):
        if isinstance(lists,list):      # 或用type(lists).__name__
            self.lists = lists
        elif isinstance(lists,str):
            self.lists = list(lists)
        else:
            print('请输入正确的排序序列')
    def bubble(self):           # 冒泡排序
        print('排序前: ',self.lists)
        length = len(self.lists)
        count = 0
        for i in range(length):
            for j in range(i+1,length):
                if self.lists[i] > self.lists[j]:     # 从小到大排序
                    count +=1
                    print('%d.前者比后者数值大,需交换数据'%count,self.lists[i],self.lists[j])
                    self.lists[i],self.lists[j] = self.lists[j],self.lists[i]
                    print('交换后的序列是:',self.lists)
        print('冒泡排序后的序列是:',self.lists)
        return self.lists
import random
def random_int(length):     # 随机生成length1-100之间的整数
    list = []
    for i in range(length):
        list.append(random.randint(1,100))
    return list

练习3:猜数

import random

def guess(number):
    numMax = 99
    numMin = 1
    count = 0
#     num = input('请输入一个整数%d-%d的数:'%(numMin,numMax))
    while True:
        num = input('请输入一个整数%d-%d的数:'%(numMin,numMax))
        if num <  number:
            numMin = num
            print("请输入%d-%d"%(numMin,numMax))
            count += 1
#             continue
        elif num > number:
            numMax = num
            print("请输入%d-%d"%(numMin,numMax))
            count += 1
        else:
            print "Guess Right for %d times"%count
            break
if __name__=='__main__':
       a = random.randint(1,99)

       guess(a)

from random import randint
def guessNum():
    num = randint(0,100)    # 随机需要猜的数字
    flag = False
    small_num = 0
    big_num = 100
    count = 0
    while flag == False:
        raw_num = int(input("输入需要猜的数字:"))
        if raw_num == num:
            count +=1
            flag = True
        elif raw_num > num:
            count += 1
            big_num = raw_num
            print("太大了,请输入%d - %d 的数字"%(small_num,raw_num))
        elif raw_num < num:
            count += 1
            small_num = raw_num
            print("太小了,请输入%d - %d 的数字"%(raw_num,big_num))
        else:
            print('请输入0-100内的数字')
    print('count: %d'%count)
guessNum()

练习4: 完全数

def isPerfect(num):
    lists = [i for i in range(1,num) if not (num%i)]
    if sum(lists) == num:
        print '%d is perfect!'%num
for number in range(2,10000):

    isPerfect(number)

练习5: 9*9乘法表

def print99():
    for i in range(1,10):
        for j in range(1,i+1):
            print '%d*%d=%d '%(j,i,i*j),
        print '\n'

print99()

python3

print('%d*%d=%d '%(j,i,i*j),end='')

猜你喜欢

转载自blog.csdn.net/u013783095/article/details/79802455