python100例详解-Python经典算法100及解析(⼩结)
1:出字符串s="aaabbbccceeefff111144444"中,字符出现次数最多的字符
(1)考虑去重,⾸先将字符串进⾏过滤去重,这样在根据这些字符进⾏循环查询时,将会减少循环次数,提升效率。但是本⼈写的代码较为臃肿,有更好的希望留⾔评论
str = 'a1fsfs111bbbcccccvvvvvnnnnboooooosssnb'
class Countvalue():
def countvalue(self, str1):
'''
利⽤set⾃⾝的去重功能
:param str1: 对传进来的字符串过滤
:return: 返回⼀个不含重复字符的list
'''
list1 = []
result = []
for x in str1:
list1.append(x)
result = set(list1)
return result
def count(self, str1):
'''
对已经去重的list进⾏遍历,因已去重
从⽽减少循环次数,提⾼检索效率
:param str1:
:
return:
'''
list = Countvalue().countvalue(str1)
a = 0
tump = {}
for x in list:
test = unt(x)
if test > a:
tump.clear()
a = test
tump[x] = a
elif test == a:
a = test
tump[x] = a
wxpython设置窗口边框颜return tump
if __name__ == '__main__':
print(Countvalue().count(str))
(2)不考虑去重
s = "xssdddeeeeeeeffff"
max_times = 0
result = {}
for i in s:
power歌曲中英文歌词unt(i) > max_times:
result.clear()
result[i] = s.count(i)
max_times = s.count(i)
unt(i) == max_times:
result[i] = s.count(i)
print result
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
2018.1.30
Python 练习100题
'''
'''
题⽬001:有四个数字:1、2、3、4,能组成多少个互不相同且⽆重复数字的三位数?各是多少?'''
def tm001():
'''
【个⼈备注】:按题意直接写出来
'''currenttimemillis怎么转换成时间
arr = []
for i in range(1,5):
for j in range(1,5):
num = 100*i+10*j+k
if i!=j and j!=k and i!=k and num not in arr:# 互不相同且⽆重复数字的三位数
arr.append(num)
print(len(arr),arr)
def tm001_1():
'''
【个⼈备注】:其实python⾃带排列组合模块,可以直接调⽤。
也知道这个写法,只是函数记不住,还是百度⼀下才能写出来。
如果这是⾯试题,能写出后⼀种当然好,不能的话还是⽼⽼实实的按照上⾯的思路来吧。
'''
import itertools
temp_arr = list(itertools.permutations([1, 2, 3, 4], 3)) # 排列 # A_4^3 = (4)!/(4-3)! = (4*3*2*1)/1 = 24 arr = [100*t[0]+10*t[1]+t[2] for t in temp_arr]
print(len(arr),arr)
'''
题⽬002:企业发放的奖⾦根据利润(I)的多少来提成:
低于或等于10万元时,奖⾦可提10%;
利润⾼于10万元,低于20万元时,低于10万元的部分按10%提成,⾼于10万元的部分,可提成7.5%;
20万到40万之间时,⾼于20万元的部分,可提成5%;
40万到60万之间时⾼于40万元的部分,可提成3%;
60万到100万之间时,⾼于60万元的部分,可提成1.5%;
⾼于100万元时,超过100万元的部分按1%提成。
从键盘输⼊当⽉利润I,求应发放奖⾦总数?
'''
def tm002():
'''
程序分析:请利⽤数轴来分界,定位。
【个⼈备注】:这种处理数轴问题的写法,值得参考。⽐elif的写法,简洁⽅便的多。
'''
money = int(input('净利润:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
bonus = 0
if money>arr[i]: # 对于处于区间的部分
bonus+=(money-arr[i])*rat[i] # 计算并累加奖励
money=arr[i] # 剩余部分
print(bonus)
python基础代码100例'''
题⽬003:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?'''
def tm003():
'''
【个⼈备注】:⽹站上是求了⼀下⽅程,没细看。
python⼜不是没有开⽅函数,直接按字⾯意思解了。
'''
import math
for i in range(1000):
x = math.sqrt(i+100)
y = math.sqrt(i+100+168)
if x%1==0 and y%1==0:
print(i)
'''
题⽬004:输⼊某年某⽉某⽇,判断这⼀天是这⼀年的第⼏天?
'''
def tm004():
'''
【个⼈备注】:知道python有时间元组这⼀概念,这道题完全不需要计算。
时间元组包含九个属性
tm_year 年
tm_mon ⽉(1~12)
tm_mday ⽇(1~31)
tm_hour 时(0~23)
tm_min 分(0~59)
tm_sec 秒(0~61, 60或61是闰秒)
tm_wday 星期(0~6, 0是周⼀)
tm_yday 第⼏天(1~366, 366是儒略历)
tm_isdst 夏令时(平时⽤不到)
'''
import time
date = input('输⼊时间(例如2018-01-23):')
st = time.strptime(date,'%Y-%m-%d') # 时间⽂本转化成时间元祖
num = st.tm_yday
print(num)
'''
题⽬005:输⼊三个整数x,y,z,请把这三个数由⼩到⼤输出。
'''
def tm005():
print('输⼊三个数字')
怎么安装vs2017
x = input('输⼊第1个数字:')
y = input('输⼊第2个数字:')
z = input('输⼊第3个数字:')
l = [x,y,z]
数据库第六章答案王珊arr = sorted(l) # 你也可以使⽤list.sort()⽅法来排序,此时list本⾝将被修改
print(arr)
'''
题⽬006:斐波那契数列。
'''
def tm006():
'''
程序分析:斐波那契数列,⼜称黄⾦分割数列,指的是这样⼀个数列:0、1、1、2、3、5、8、13、21、34、……。【个⼈备注】:很多种解法,我是按照分割的⽅式,每次取列表后两项,然后相加。
'''
l = [0,1]
for i in range(10):
arr = l[-2:]
l.append(arr[0]+arr[1])
print(l)
'''
题⽬007:将⼀个列表的数据复制到另⼀个列表中。
'''
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论