python练习(挑战篇)

1、编程解决猴子吃桃问题 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想吃时,只剩下一个桃,求第一天共摘了多少个桃?(迭代法)

p = 1
print('第10天吃之前就剩1个桃子')
for i in range(1, 10):
    p = (p+1) * 2
    print('第%s天吃之前还有%s个桃子' % (i, p))
print('第1天共摘了%s个桃子' % p)

2、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?

h = 100
w = 10
lenth = h
for i in range(1, w+1):
    hight = h / 2 ** i
    lenth =lenth+hight*2
    if w == 1:
        hight = 100
        lenth = 100
    if w - 1 == i:
        print("第", w, '次反弹的高度为:', hight, '米')
        print('共经过', lenth, '米')

3、用户输入一句英文句子,打印出每个单词及其重复的次数

sentence = input('Enter a sentence :\n')
str = sentence.split()
a = {}
for num in str:
    if num in a :
        a[num] += 1
    else:
        a[num] = 1
print(a)

4、列表b = [1,2,3,4,5]

(1)用两种方法输出下面的结果:[1,2,3,4,5,6,7,8]

(2)用列表的2种方法返回结果:[5,4]

(3)判断2 是否在列表中

b = [1,2,3,4,5]
print(b + [6,7,8])
b.append(6)
b.append(7)
b.append(8)
print(b)
b = [1,2,3,4,5]
print(b[3:5])
print(b[3:])
b = [1,2,3,4,5]
print(2 in b)

5、输出指定范围内的素数

lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
 
for num in range(lower,upper + 1):
    # 素数大于 1
    if num > 1:
        for i in range(2,num):
            if (num % i) == 0:
                break
        else:
            print(num,end=' ')

6、计算Π的值(蒙特卡罗法)

from random import random
from math import sqrt
max = 2000000
count = 0
for i in range (1,max):
    x,y = random(),random()
    dist = sqrt(x**2+y**2)
    if  dist <= 1:
        count =count +1
pi = 4*(count/max)
print("Π的值为%f"%pi)

7、输入某年某月某日,判断这一天是这一年的第几天?

year = int(input('year:\n'))
month = int(input('month:\n'))
day = int(input('day:\n'))
months=(0,31,59,90,120,151,181,212,243,273,304,334)
if 0<month<13 and 0<day<32:
    sum =months[month-1]
else:
    print('data error!')
sum +=day 
leap = 0
if (year % 400 == 0 ) or ((year %4 == 0)and (year % 100 == 0)):
    leap = 1
if leap == 1 and months > 2:
    sum += 1
print("%s年%s月%s日是这一年的第%s天"%(year,month,day,sum))

8、判断一个密码是否符合要求

code=str(input("请输入你的密码:\n"))
if len(code) < 6 or len(code) > 20 :
    print( '密码长度不符合要求')
else :
     for i in code :
        s=ord(i) in range(97, 123) or ord(i) in range(65, 91) or ord(i) in range(48,56)
        if s:
            print('密码符合要求')
            break
        else :
            print( '密码只能由大小写字母和数字组成,请重新输入')
            break

9、定义一个函数,求两个正整数的最小公倍数

def beishu(x,y):
    if x > y:
        bigger = x
    else:
        bigger = y
    while True:
        if bigger % x ==0 and bigger % y==0:
            print(str(num1)+"和"+str(num2)+"的最小公倍数为%d"%bigger)
            break
        else:
            bigger +=1
num1 = int(input("请输入第一个数:"))
num2 = int(input("请输入第二个数:"))
beishu(num1,num2)

10、定义一个动物类,有名字和叫声两个公有属性和颜色这个私有属性。定义一只狗和一只猫,继承父类(动物类)的属性

class Animal(object):
   def __init__(self,name,jiao):
       self.name=name
       self.jiao=jiao
       self.__color="白色"
class Dog(Animal):
    def __init__(self,name="旺财",jiao="汪汪"):
        self.name=name
        self.jiao=jiao
    def printInfo(self):
        print("名字是:%s"%self.name)
        print("叫声是:%s"%self.jiao)
class Cat(Animal):
    def __init__(self,name="咪咪",jiao="喵喵"):
        self.name=name
        self.jiao=jiao
    def printInfo(self):
        print("名字是:%s"%self.name)
        print("叫声是:%s"%self.jiao)
wangcai=Dog()
wangcai.printInfo()
mimi =Cat()
mimi.printInfo()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值