练习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): # 随机生成length个1-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='')