鱼C论坛

 找回密码
 立即注册
查看: 4335|回复: 35

[学习笔记] python学习记录

[复制链接]
发表于 2018-8-20 15:17:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python小白一枚,记录下自己写过的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-8-20 15:19:39 | 显示全部楼层
1.二进制转换
def my_bin(x):
        s = ''
        while x:
                n = x % 2
                x = x // 2
                s = '{}'.format(n) + s
        print(int(s))
my_bin(13)

注意 n = x % 2和x = x // 2两句上下不要颠倒,否则会少输出一位(汗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 15:43:40 | 显示全部楼层
2.寻找三位数的水仙花数
def my_fun():
        for x in range(100, 1000):
                m = x // 100
                n = (x % 100) // 10
                k = x % 10
                if m**3 + n**3 + k**3 == x:
                        print(x)
my_fun()
感觉计算量有点大。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 16:02:09 | 显示全部楼层
3.寻找字符串
def my_fun():
        temp1 = input('请输入目标字符串:')
        temp2 = input('请输入子字符串(两个字符):')
        count = temp1.count(temp2)
        print('子字符串在目标字符串中共出现%d次' % count)
my_fun()
出现零次即为没找到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 17:05:55 | 显示全部楼层
4.判断回文联
def my_fun():
        temp = input('请输入一句话:')
        if temp == temp[::-1]:
                print('是回文联')
        else:
                print('不是回文联!')
my_fun()
不知道切片法是不是最简单
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 17:59:15 | 显示全部楼层
5.统计字符串中字母,数字,空格等的个数
def my_fun(*arg):
        count1 = 1
        count2 = 0
        count3 = 0
        count4 = 0
        count5 = 0
        while count1 < (len(arg)+1):
                for x in range(len(arg[count1-1])):
                        if arg[count1-1][x].isalpha():
                                count2 += 1
                        elif arg[count1-1][x].isdigit():
                                count3 += 1
                        elif arg[count1-1][x] == ' ':
                                count4 += 1
                        else:
                                count5 += 1
                print('第%d个字符串共有:英文字母%d个,数字%d个,空格%d个,其他字符%d个' % (count1, count2, count3, count4, count5))
                count1 += 1
                count2 = 0
                count3 = 0
                count4 = 0
                count5 = 0
my_fun('I love fishc.com.','I love you, you love me.','I am')
注意range()是前闭后开
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 19:17:55 | 显示全部楼层
6.在很长一段字符串中统计个字符及其出现的次数
str1 = ''' '''
list1 = []
for each in str1:
    if each not in list1:
        if each  == '\n':
           print(r'\n',str1.count(each))
        else:
            print(each,str1.count(each))
    list1.append(each)
注意缩进,最后会有Good luck
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 09:46:12 | 显示全部楼层
本帖最后由 HL1 于 2018-8-21 10:03 编辑

7.寻找密码, 密码为小写字母,左三和右三均为大写字母
str1 = ''''''
str2 = str1.replace('\n', '') #去掉\n换行符
length = len(str2)
for i in range(3,length-3):
        if str2[i-3:i].isupper() and str2[i].islower() and str2[i+1:i+4].isupper():
                if str2[i-4].islower() and str2[i+4].islower():
                        print(str2[i], end='')
忘记了仅有二字 ,结果为 i love fishc
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 10:52:26 | 显示全部楼层
8.将列表绑在一起
list1 = list(map(lambda x,y:[x,y], [1,3,5,7,9], [2,4,6,8,10]))
结果为:[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
注意python3中map()函数返回的是一个迭代器
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 15:07:21 | 显示全部楼层
9.递归求幂指数
def power(x,y):
        if y > 1:
                return power(x,y-1) * x
        else:
                return x
print(power(2,3))
非整数情况感觉好难
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 15:17:09 | 显示全部楼层
10.递归用欧几里得算最大公约数
def gcd(x, y):
        if y != 0:
                x , y = y, x%y
                return gcd(x, y)
        if y == 0:
                return x
print(gcd(32,27))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 15:35:12 | 显示全部楼层
11.递归法转换二进制
def my_bin(x):
        str1 = ''
        if (x // 2) != 0:
                str1 = str(my_bin(x // 2)) + str(x%2) + str1
        if (x // 2) == 0:
                str1 = str(x%2) + str1
        return str1
print(my_bin(789))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 16:21:00 | 显示全部楼层
12.取出参数按顺序放入列表中
list1 = []
def get_digits(n):
        m = len(str(n))
        if m == 1:
                list1.append(n)
        else:
                list1.append(n // 10**(m-1))
                n = n % 10**(m-1)
                return get_digits(n)
        print(list1)
get_digits(12345)
注意list1不能放入函数中否则会随着递归的过程中不断初始化为空列表
注意list1.append(n // 10**(m-1))和n = n % 10**(m-1)两行不能弄反了,经常出现这个错误
小甲鱼答案更简洁
list1 = []
def get_digits(n):
        if  n > 0:
                result.insert(0,n%10)
                get_digits(n//10)
get_digits(12345)
print(result)
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 16:28:47 | 显示全部楼层
13.求岁数
def p(n):
        if  n == 1:
                return 10
        else:
                return p(n-1) + 2
print(p(5))
这个比较简单,不过不要忘记了return
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 16:50:08 | 显示全部楼层
14.字符串的replace()真的好用
删除字符串中的空格 string.replace(' ', '')
删除换行符string.replace('\n', '')
string.split(',')以逗号为分隔符将字符串分隔为列表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 17:21:55 | 显示全部楼层
15.通讯录
print('''---欢迎进入通讯程序---
        ---1:查询联系人资料---
        ---2:插入新的联系人---
        ---3:删除新的联系人---
        ---4:退出通讯录程序---''')
dict1 = dict()

while True:
        m = int(input('请输入相关的指令代码:'))
        if m == 1:
                name = input('请输入联系人姓名:')
                if name in dict1:
                        print(name + ':' + dict1[name])
                else:
                        print('不存在')
        if  m == 2:
                if name in dict1:
                        print('已存在')
                        print(name + ':' + dict1[name])
                        if input('修改?:') == 'y':
                                dict1[name] = input('请输入电话:')
                else:
                        dict1[name] = input('请输入电话:')
        if m == 3:
                name = input('请输入联系人姓名:')
                if name in dict1:
                        del(dict1[name])
                else:
                        print('不存在')
        if m == 4:
                break
print('|---感谢使用通讯录程序---|')
字典中的删除方法dict1.clear()是删除所有数据,返回值为None
pop()是删除给定键的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 18:24:18 | 显示全部楼层
16.创建并写入内容
def file_write(file_name):
    f = open(file_name,'w')
    print('请输入内容:【单独输入\':w\'保存退出】:')

    while True:
        write_some = input()
        if write_some != ':w':
            f.write('%s\n' % write_some)
        else:
            break

    f.close()
file_name = input('请输入文件名:')
file_write(file_name)
自己没出来没有想到用循环语句和换行符在IDLE中一换行按ENTER键就输入完毕了学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 18:52:57 | 显示全部楼层
17.比较两文件内容
def cmp_file():
    file1_name = input('请输入需要比较的头一个文件名:')
    file2_name = input('请输入需要比较的另一个文件名:')
    f1 = open(file1_name)
    f2 = open(file2_name)
    count = 0
    differ = []

    for line1 in f1:
        line2 = f2.readline()
        count += 1
        if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()

    if len(differ) == 0:
        print('相同')
    else:
        print('两个文件共有【%d】处不同:' % len(differ))
        for each in differ:
            print('第%d行不一样' % each)
cmp_file()
想的过于复杂了,比较每行有哪些不同
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 19:03:31 | 显示全部楼层
18.打印文件的前n行
def open_file():
    file_name = input('请输入要打开的文件名:')
    count = int(input('请输入需要显示改文件前几行:'))
    f = open(file_name)

    while count:
        line = f.readline()
        count -= 1
        print(line)

    f.close()
open_file()
小甲鱼答案:def open_file():
    file_name = input('请输入要打开的文件名:')
    count = int(input('请输入需要显示改文件前几行:'))
    f = open(file_name)

    while count:
        line = f.readline()
        count -= 1
        print(line)

    f.close()
open_file()
原来不用设置count即可逐行打印
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 19:04:11 | 显示全部楼层
HL1 发表于 2018-8-21 19:03
18.打印文件的前n行
def open_file():
    file_name = input('请输入要打开的文件名:')

也不要line
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 13:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表