如果真的想学精,学什么都不是好学的,如果真的想把Python学的出神入化,几乎自己想做什么都可以,就要下定恒心,坚持下去。
接下来继续更新Python练习题2,通过更新前一部的练习题让自己也学到了不少东西
1.取任意小于1美元的金额,然后计算可换成哪几种硬币,分别有几个?硬币有1美分、5美分、10美分、25美分4种,如0.76美元可换3个25美分、1枚1美分
1 #encoding=utf-8 2 __author__ = 'heng' 3 from copy import deepcopy #对于要改变字典时,要记住是要深度复制,要不然原始的字典也会受影响 4 money = float(raw_input("please enter the money(dollar):")) 5 money = int(100*money) 6 moneydic = {25:0,10:0,5:0,1:0} 7 for key in moneydic: 8 if money >= key: 9 moneydic[key] = int(money/key) 10 money = int(money % key) 11 moneydic1 = deepcopy(moneydic) #这里进行深度复制 12 for key in moneydic: 13 if moneydic[key] == 0: 14 del moneydic1[key] #因为进行了深度复制,所以在进行for循环迭代时才不会报迭代对象改变的错误 15 16 for key in moneydic1: 17 print("%s the %s cent "%(moneydic1[key],key)),
2.实现一个简单的计算器
1 #encoding=utf-8 2 __author__ = 'heng' 3 #实现一个简单的计算器 4 operand = raw_input("input:") 5 operator = ['+','-','*','/','**','%'] 6 def work(n1,op,n2): #运算的函数 7 if op == '+':return (n1 + n2) 8 if op == '-':return (n1 - n2) 9 if op == '*':return (n1 * n2) 10 if op == '/':return (n1 / n2) 11 if op == '**':return (n1 ** n2) 12 if op == '%': return (n1 % n2) 13 #主函数 14 for i in operator: 15 if operand.find(i) > -1 and operand.count(i) < 2: #其中的operand.count(i) < 2 使用来区分*和**的 16 number = operand.split(i) 17 newL = [] 18 for x in range(2): 19 if number[x].find('.') > -1: 20 newL.append(float(number[x])) 21 else: 22 newL.append(int(number[x])) 23 print work(newL[0],i,newL[1])
3.建立一个简单的出牌游戏
1 #encoding=utf-8 2 __author__ = 'heng' 3 #建立一个随机出牌的游戏系统 4 from random import * 5 #from pprint import pprint 6 values = range(1,11) + 'Jack Queue King'.split() 7 suits = 'diamonds clubs hearts spades'.split() 8 deck = ['%s of %s'%(v,s) for v in values for s in suits] 9 shuffle(deck) 10 while deck: #这里可以控制程序每次按一次回车打印一个牌 11 raw_input(deck.pop())
4.输出一个国际象棋的棋盘
解决方案:国际棋盘是这样的
棋盘为8*8的黑白相间的方块组成,程序中利用‘回’来表示黑色,‘口’表示白色。
貌似程序有点傻额,不过很容易理解。。。
1 #encoding=utf-8 2 __author__ = 'heng' 3 #建立一个国际象棋的棋盘 4 black = u'回' #‘回’用来表示黑色 5 white = u'口' #‘口’ 用来表示白色 6 for x in range(1,9): 7 if x % 2 ==1: 8 for y in range(1,9): 9 if y % 2 == 1: 10 print black, 11 else: 12 print white, 13 if y % 8 == 0: 14 print 15 else: 16 for z in range(1,9): 17 if z % 2 == 0: 18 print black, 19 else: 20 print white, 21 if z % 8 == 0: 22 print
程序运行的结果:
5.打印出所有的水仙花数
所谓的水仙花数就是三位数的个十百三位的立方之和等于这个数本身
1 #encoding=utf-8 2 __author__ = 'heng' 3 #打印出所有的水仙花数 4 for i in range(100,1000): 5 x = i % 10 #个位数 6 y = (i / 10) % 10 #十位数 7 z = i / 100 #百位数 8 if i == x**3 + y**3 + z**3: 9 print i,
6.将一个数分解质因数
1 #encoding=utf-8 2 __author__ = 'heng' 3 n = int(raw_input("input number: ")) 4 print "n = %d" % n 5 6 for i in range(2,n + 1): 7 while n != i: 8 if n % i == 0: 9 print i, 10 print '*', 11 n = n / i 12 else: 13 break 14 print "%d" % n