如果真的想学精,学什么都不是好学的,如果真的想把Python学的出神入化,几乎自己想做什么都可以,就要下定恒心,坚持下去。

接下来继续更新Python练习题2,通过更新前一部的练习题让自己也学到了不少东西

1.取任意小于1美元的金额,然后计算可换成哪几种硬币,分别有几个?硬币有1美分、5美分、10美分、25美分4种,如0.76美元可换3个25美分、1枚1美分

 #encoding=utf-8
__author__ = 'heng'
from copy import deepcopy #对于要改变字典时,要记住是要深度复制,要不然原始的字典也会受影响
money = float(raw_input("please enter the money(dollar):"))
money = int(100*money)
moneydic = {25:0,10:0,5:0,1:0}
for key in moneydic:
if money >= key:
moneydic[key] = int(money/key)
money = int(money % key)
moneydic1 = deepcopy(moneydic) #这里进行深度复制
for key in moneydic:
if moneydic[key] == 0:
del moneydic1[key] #因为进行了深度复制,所以在进行for循环迭代时才不会报迭代对象改变的错误 for key in moneydic1:
print("%s the %s cent "%(moneydic1[key],key)),

2.实现一个简单的计算器

 #encoding=utf-8
__author__ = 'heng'
#实现一个简单的计算器
operand = raw_input("input:")
operator = ['+','-','*','/','**','%']
def work(n1,op,n2): #运算的函数
if op == '+':return (n1 + n2)
if op == '-':return (n1 - n2)
if op == '*':return (n1 * n2)
if op == '/':return (n1 / n2)
if op == '**':return (n1 ** n2)
if op == '%': return (n1 % n2)
#主函数
for i in operator:
if operand.find(i) > -1 and operand.count(i) < 2: #其中的operand.count(i) < 2 使用来区分*和**的
number = operand.split(i)
newL = []
for x in range(2):
if number[x].find('.') > -1:
newL.append(float(number[x]))
else:
newL.append(int(number[x]))
print work(newL[0],i,newL[1])

3.建立一个简单的出牌游戏

 #encoding=utf-8
__author__ = 'heng'
#建立一个随机出牌的游戏系统
from random import *
#from pprint import pprint
values = range(1,11) + 'Jack Queue King'.split()
suits = 'diamonds clubs hearts spades'.split()
deck = ['%s of %s'%(v,s) for v in values for s in suits]
shuffle(deck)
while deck: #这里可以控制程序每次按一次回车打印一个牌
raw_input(deck.pop())

4.输出一个国际象棋的棋盘

解决方案:国际棋盘是这样的

棋盘为8*8的黑白相间的方块组成,程序中利用‘回’来表示黑色,‘口’表示白色。

貌似程序有点傻额,不过很容易理解。。。

 #encoding=utf-8
__author__ = 'heng'
#建立一个国际象棋的棋盘
black = u'回' #‘回’用来表示黑色
white = u'口' #‘口’ 用来表示白色
for x in range(1,9):
if x % 2 ==1:
for y in range(1,9):
if y % 2 == 1:
print black,
else:
print white,
if y % 8 == 0:
print
else:
for z in range(1,9):
if z % 2 == 0:
print black,
else:
print white,
if z % 8 == 0:
print

程序运行的结果:

5.打印出所有的水仙花数

所谓的水仙花数就是三位数的个十百三位的立方之和等于这个数本身

 #encoding=utf-8
__author__ = 'heng'
#打印出所有的水仙花数
for i in range(100,1000):
x = i % 10 #个位数
y = (i / 10) % 10 #十位数
z = i / 100 #百位数
if i == x**3 + y**3 + z**3:
print i,

6.将一个数分解质因数

 #encoding=utf-8
__author__ = 'heng'
n = int(raw_input("input number:\n"))
print "n = %d" % n for i in range(2,n + 1):
while n != i:
if n % i == 0:
print i,
print '*',
n = n / i
else:
break
print "%d" % n

Python练习题2的更多相关文章

  1. Python练习题 028:求3*3矩阵对角线数字之和

    [Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...

  2. Python练习题 027:对10个数字进行排序

    [Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...

  3. Python练习题 026:求100以内的素数

    [Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...

  4. Python练习题 025:判断回文数

    [Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. ---------------------------------------- ...

  5. Python练习题 024:求位数及逆序打印

    [Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...

  6. Python练习题 004:判断某日期是该年的第几天

    [Python练习题 004]输入某年某月某日,判断这一天是这一年的第几天? ---------------------------------------------- 这题竟然写了 28 行代码! ...

  7. Python练习题-1.使用匿名函数对1~1000求和,代码力求简洁。

    Python 练习 标签(空格分隔): Python Python练习题 Python知识点 一.使用匿名函数对1~1000求和,代码力求简洁. 答案: In [1]: from functools ...

  8. PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

    Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...

  9. python 基础 2.8 python练习题

    python 练习题:   #/usr/bin/python #coding=utf-8 #@Time   :2017/10/26 9:38 #@Auther :liuzhenchuan #@File ...

随机推荐

  1. dns config

    .: { forward . { force_tcp expire 50s health_check 50s } cache debug errors whoami log } Corefile .: ...

  2. 导出csv文件(php实现)

    <?php namespace App\Library\lib; class CsvLib { /** * [构造函数] * */ public function __construct() { ...

  3. 为什么在属性中设置private set

    引言: 属性的引入来自C#的封装机制,也就是说对象的内部数据不应该由对象实例来直接访问,我们可以使用传统的Get和Set方法,来封装字段,C#为我们提供了语法糖,也就是属性.属性包括get和set,分 ...

  4. laravel(4.2) +Zizaco

    操作步骤:https://github.com/Zizaco/entrust/tree/1.0 这篇博客说的蛮详细的:http://blog.boolw.com/?p=241 简化后的步骤 1.在根项 ...

  5. 了解DOM

    DOM是为了方便处理层次型文档(如XML.HTML)的一种技术.DOM还提供了一套API,使开发人员可以用面向对象的方式来处理这些文档.对于XML文档来说,有专门的处理XML文档是XML  DOM,一 ...

  6. 省市区名称code

    https://blog.csdn.net/hichinamobile/article/details/51725090 --省 create table t_base_provinces( id ) ...

  7. zoj 1251 Box of Bricks

    Box of Bricks Time Limit: 2 Seconds      Memory Limit: 65536 KB Little Bob likes playing with his bo ...

  8. ms sql server 大批量导入

    BULK INSERT 文章:BULK INSERT如何将大量数据高效地导入SQL Server 可以首先在数据库建一个表Temp_tb,这个表作为导入数据的表,然后使用bulk insert导入,导 ...

  9. 【置换】G. Poker 2.0

    https://www.bnuoj.com/v3/contest_show.php?cid=9146#problem/G [题意] 题意很简单,就是“鸽尾式”洗扑克,问洗m次各张牌的位置 [思路] 牌 ...

  10. 应对ADT(Eclipse)的No more handles解决办法

    应对ADT(Eclipse)的No more handles解决方法 ADT(Eclipse)最近几天经常出现如下错误对话框:org.eclipse.swt.SWTError: No more han ...