Python编程练习:菜鸟教程Python3实例刷题二

菜鸟教程Python3实例刷题 26-50

26

# 引入日历模块 , canlendar.month()模块
import calendar

yy = int (input("输入年份: "))
mm = int (input("输入月份:"))

print(calendar.month(yy,mm))

27

# 用递归的方式输出斐波那契额数列:
# F(n) = F(n-1) + F(n-2)
# 0 1 1 2 3 5 8 13 ...
def Fibo(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    else:
        return Fibo(n-1) + Fibo(n-2)


n = int(input("输入斐波那契项数: "))
if n<1:
    print("请输入一个正整数!")
else:
    for x in range(0,n):
        print(Fibo(x))

28

# 文件I/O

with open("test.txt","wt") as out_file:
    out_file.write("在当前目录下创建一个文本并写入信息~\n啦啦啦")

with open("test.txt","rt") as in_file:
    text = in_file.read()

print(text)

29

# 字符串判断

# 测试实例一
print("测试实例一")
str = "runoob.com"
print(str.isalnum()) # 判断所有字符都是数字或者字母
print(str.isalpha()) # 判断所有字符都是字母
print(str.isdigit()) # 判断所有字符都是数字
print(str.islower()) # 判断所有字符都是小写
print(str.isupper()) # 判断所有字符都是大写
print(str.istitle()) # 判断所有单词都是首字母大写,像标题
print(str.isspace()) # 判断所有字符都是空白字符、\t、\n、\r

print("------------------------")

# 测试实例二
print("测试实例二")
str = "runoob"
print(str.isalnum())
print(str.isalpha())
print(str.isdigit())
print(str.islower())
print(str.isupper())
print(str.istitle())
print(str.isspace())

30

# 字符串的大小写转换

str = "www.runoob.com"
print(str.upper())          # 把所有字符中的小写字母转换成大写字母
print(str.lower())          # 把所有字符中的大写字母转换成小写字母
print(str.capitalize())     # 把第一个字母转化为大写字母,其余小写
print(str.title())          # 把每个单词的第一个字母转化为大写,其余小写

31

# 输出的是一个元组,第一个元素是所查月份的第一天对应的是星期几(0-6),第二个元素是这个月的天数。
# 以上实例输出的意思为 2016 年 9 月份的第一天是星期四,该月总共有 30 天。

import calendar #ctrl + 左击 查看源码
monthRange = calendar.monthrange(2016,9)
print(monthRange)
print(calendar.month_name())

32

# 求昨天的日期
# 引入 datetime 模块
import datetime

def getYesterday():
    today = datetime.date.today()
    print("测试today: ",end='\t');print(today,end='\t');print(type(today))
    oneday = datetime.timedelta(days=1)
    print("测试oneday: ",end='\t');print(oneday,end='\t');print(type(oneday))
    yesterday = today - oneday
    print("真正yesterday: ",end='\t')
    return yesterday

# 输出
print(getYesterday())

33

# list 常用操作
# https://www.runoob.com/python3/python3-list-operator.html

li = ["a", "b", "mpilgrim", "z", "example"]

# 增加元素
li.append("new")    # 1、增加单个元素
print(li)
li.insert(2, "new") # 2、插入指定位置,下标从0开始
print(li)
li.extend(["two", "elements"]) # 3、增加多个元素
print(li)

# 获取元素下标
print(li.index("new"))
print(li.index("a"))

# 删除
li.remove("new")    # 删除首次出现的一个值
print(li)
li.pop()      # pop 会做两件事: 删除 list 的最后一个元素, 然后返回删除元素的值。
print(li)

# 还有很多进阶的函数,看网址,总结的非常好

34

# Python 约瑟夫生者死者小游戏
# 30 个人在一条船上,超载,需要 15 人下船。
# 于是人们排成一队,排队的位置即为他们的编号。
# 报数,从 1 开始,数到 9 的人下船。
# 如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?


# 解题思路:一共30个人,走15个人,留15个人。 9*15=135  30*5 =150 > 135

li = [0]
for i in range(1,31):
    li.append(i)

levae_num = 0
start = 1
print(li)
i=0
while i<=8:
    if i==8:
        start = (start + i) % (30 - levae_num)
        print(li[start],"号下船了")
        li.remove(li[start])
        levae_num = levae_num + 1
        i = 0
    elif levae_num==15:
            break
    else:
        i = i +1

print('\n')
people=list(range(1,31))
while len(people)>15:
    i=1
    while i<9:
        people.append(people.pop(0))
        i+=1
    print('{:2d}号下船了'.format(people.pop(0)))

35

# 分鱼
# (x-1)%5==0
# x = (x-1)/5 * 4
def fun():
    for i in range(1,10000):
        x = i
        ans = i
        for j in range(1,6):
            flag = 0
            if (x-1)%5==0:
                x = (x-1)/5*4
                flag =1
            else:
                break
            if j==5 and flag==1:
                print(ans)
                return

fun()

36

import time

print('按下回车开始计时,按下 Ctrl + C 停止计时。')
while True:

    input("")  # 如果是 python 2.x 版本请使用 raw_input()
    starttime = time.time()
    print('开始')
    try:
        while True:
            print('计时: ', round(time.time() - starttime, 0), '秒', end="\r")
            time.sleep(1)
    except KeyboardInterrupt:
        print('结束')
        endtime = time.time()
        print('总共的时间为:', round(endtime - starttime, 2), 'secs')
        break

37

def sumOfSeries(n):
    sum = 0
    for i in range(1, n + 1):
        sum += i * i * i

    return sum


n = int(input("输入一个正整数: "))
print(sumOfSeries(n))

38

list=[1,3,5,7,9,35]
sum=0
for i in range(0,len(list)):
    sum+=list[i]
print(sum)

39

# # 定义一个整型数组,并将指定个数的元素翻转到数组的尾部。
# # 例如:(ar[], d, n) 将长度为 n 的 数组 arr 的前面 d 个元素翻转到数组尾部。
#
# def getMyReverse(arr,d,n):
#     temp_arr = [] + arr     # temp_arr = arr 是特别严格的。修改了arr等价于修改了temp_arr
#     for i in range(0,d):
#         arr.remove(arr[0])
#     # print(temp_arr)
#     # print(arr)
#     for i in range(0,d):
#         temp = temp_arr[i]
#         arr.append(temp)
#     return arr
#
# arr = [1,2,3,4,5,6,7]
# n = len(arr)
# print(arr)
# d = int(input("翻转前几个元素? [1~6]\n"))
#
# print(getMyReverse(arr,d,n))


# 滑动窗口的思想
arr1 = [1,2,3,4,5,6,7]
n = len(arr1)
d = int(input("翻转前几个元素? [1~6]\n"))
arr2 = arr1*2
for i in range(0,n):
    print(arr2[d+i],end=' ')
print('\n')
print(arr2[d:d+n])

40

# 将列表的头尾两个元素对调
def fun(arr):
    first = arr[0]
    last = arr[len(arr)-1]
    arr[0]=last
    arr[len(arr)-1]=first
    return arr

arr = [1,2,3,4,5,6,7]
print(fun(arr))

41

# 将列表指定位置的两个元素对调

def swapPositions(list, pos1, pos2):
    get = list[pos1], list[pos2]
    # print(get)
    # print(type(get))  元组类型
    list[pos2], list[pos1] = get
    return list

List = [23, 65, 19, 90]

pos1, pos2 = 1, 3
print(swapPositions(List, pos1 - 1, pos2 - 1))

42

def Reverse1(lst):
    lst.reverse()
    return lst


def Reverse2(lst):
    new_lst = lst[::-1]
    return new_lst


lst1 = [10, 11, 12, 13, 14, 15]
lst2 = [10, 11, 12, 13, 14, 15]
print(Reverse1(lst1))
print(Reverse2(lst2))

43

li = [1, 6, 3, 5, 3, 4]
print("查看 4 是否在列表中 ( 使用循环 ) : ")

try:
    li.index(4)
    print("在")
except:
    print("不在")

44

RUNOOB = [6, 0, 4, 1]
print('清空前:', RUNOOB)

RUNOOB.clear()
print('清空后:', RUNOOB)

45

def clone_runoob(li1):
    li_copy = li1[:]
    return li_copy


li1 = [4, 8, 2, 10, 15, 18]
li2 = clone_runoob(li1)
li3 = li1.copy()
print("原始列表: ", li1)
print("复制后列表:", li2)
print("复制后列表:", li3)

46

li = [1,2,3,4,5,3,4,3,3,3,3,4,5,5,43,3,3,3,3,3,4,3,3,]
print(li)
num = int(input("输入要查询的数字: "))
ans =li.count(num)
print("数字{0}的次数是{1}".format(num,ans))

47

list1 = [11, 5, 17, 18, 23]

print("列表元素之和为: ", sum(list1))

48

li = [1,3,5]
ans = 1
for i in range(0,len(li)):
    ans *= li[i]
print(ans)

49

list1 = [10, 20, 4, 45, 99]
list1.sort()
# 这里要加 * 表示取其中的元素, 而且要用:
print("最小元素为:", *list1[:1])
print("最小元素为:", list1[:1])
print("最小元素为:", min(list1))

50

list1 = [10, 20, 4, 45, 99]

list1.sort()

print("最大元素为:", list1[-1])
print("最大元素为:", max(list1))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值