python学习记录
python小白一枚,记录下自己写过的 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两句上下不要颠倒,否则会少输出一位(汗{:5_104:} ) 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()
感觉计算量有点大。。。。 3.寻找字符串
def my_fun():
temp1 = input('请输入目标字符串:')
temp2 = input('请输入子字符串(两个字符):')
count = temp1.count(temp2)
print('子字符串在目标字符串中共出现%d次' % count)
my_fun()
出现零次即为没找到 4.判断回文联
def my_fun():
temp = input('请输入一句话:')
if temp == temp[::-1]:
print('是回文联')
else:
print('不是回文联!')
my_fun()
不知道切片法是不是最简单 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)):
if arg.isalpha():
count2 += 1
elif arg.isdigit():
count3 += 1
elif arg == ' ':
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()是前闭后开 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 本帖最后由 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.isupper() and str2.islower() and str2.isupper():
if str2.islower() and str2.islower():
print(str2, end='')
忘记了仅有二字{:5_104:} ,结果为 i love fishc
8.将列表绑在一起
list1 = list(map(lambda x,y:, , ))
结果为:[, , , , ]
注意python3中map()函数返回的是一个迭代器 9.递归求幂指数
def power(x,y):
if y > 1:
return power(x,y-1) * x
else:
return x
print(power(2,3))
非整数情况感觉好难 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)) 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)) 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不能放入函数中否则会随着递归的过程中不断初始化为空列表{:5_104:}
注意list1.append(n // 10**(m-1))和n = n % 10**(m-1)两行不能弄反了,经常出现这个错误{:5_104:}
小甲鱼答案更简洁
list1 = []
def get_digits(n):
ifn > 0:
result.insert(0,n%10)
get_digits(n//10)
get_digits(12345)
print(result)
学习学习 13.求岁数
def p(n):
ifn == 1:
return 10
else:
return p(n-1) + 2
print(p(5))
这个比较简单,不过不要忘记了return 14.字符串的replace()真的好用
删除字符串中的空格 string.replace(' ', '')
删除换行符string.replace('\n', '')
string.split(',')以逗号为分隔符将字符串分隔为列表 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)
else:
print('不存在')
ifm == 2:
if name in dict1:
print('已存在')
print(name + ':' + dict1)
if input('修改?:') == 'y':
dict1 = input('请输入电话:')
else:
dict1 = input('请输入电话:')
if m == 3:
name = input('请输入联系人姓名:')
if name in dict1:
del(dict1)
else:
print('不存在')
if m == 4:
break
print('|---感谢使用通讯录程序---|')
字典中的删除方法dict1.clear()是删除所有数据,返回值为None
pop()是删除给定键的值 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)
自己没出来{:5_104:}没有想到用循环语句和换行符在IDLE中一换行按ENTER键就输入完毕了{:5_104:}学习学习 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()
想的过于复杂了,比较每行有哪些不同 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即可逐行打印 HL1 发表于 2018-8-21 19:03
18.打印文件的前n行
def open_file():
file_name = input('请输入要打开的文件名:')
也不要line
页:
[1]
2