热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python作业立方尾不变_Python经典算法100及解析

1:找出字符串saaabbbccceeefff111144444中,字符出现次数最多的字符(1)考虑去重,首先将字符串进行过滤去重&#

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 = str1.count(x)

if test > a:

tump.clear()

a = test

tump[x] = a

elif test == a:

a = test

tump[x] = a

return tump

if __name__ == "__main__":

print(Countvalue().count(str))

(2)不考虑去重s = "xssdddeeeeeeeffff"

max_times = 0

result = {}

for i in s:

if s.count(i) > max_times:

result.clear()

result[i] = s.count(i)

max_times = s.count(i)

elif s.count(i) == max_times:

result[i] = s.count(i)

print result

以下内容摘抄自:https://blog.csdn.net/watfe/article/details/79206165

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

"""

2018.1.30

Python 练习100题

http://www.runoob.com/python/python-100-examples.html

"""

"""

题目001:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

"""

def tm001():

"""

【个人备注】:按题意直接写出来

"""

arr = []

for i in range(1,5):

for j in range(1,5):

for k 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

for i in range(len(arr)):

if money>arr[i]: # 对于处于区间的部分

bonus+=(money-arr[i])*rat[i] # 计算并累加奖励

money=arr[i] # 剩余部分

print(bonus)

"""

题目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("输入三个数字")

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:将一个列表的数据复制到另一个列表中。

"""

def tm007():

"""

【个人备注】:如果系统的看过python教程之类的应该都知道。

Python里面一切都是对象,list的复制需要用[:]的方式。

至于b=a只是相当于给a取了个别名而已,指向的是同一个列表,并没有实现复制。

"""

a = [1, 2, 3]

b = a[:]

"""题外话"""

a[0]=0

print(id(a),id(b)) # 可以看到a,b的内存不一致,是复制

print(a,b) # 修改a,b不变

a = [1, 2, 3]

b = a

a[0]=0

print(id(a),id(b)) # 如果去掉[:],可以看到a,b的内存一致,并没有复制,指向的是同一个列表

print(a,b) # 修改a,b也变

"""

题目008:题目:输出 9*9 乘法口诀表。

"""

def tm008():

"""

【个人备注】:已经忘了,百度了才想起来口诀表具体长什么样。

注意 %-7s 和 end="" 的用法,其他没什么。

"""

for i in range(1,10):

for j in range(1,10):

if j<&#61;i:

string &#61; "%d*%d&#61;%d"%(j,i,j*i)

print("%-7s"%string,end&#61;"")

print("")

def tm008_1():

"""

csdn用户isgoto用format方法生成字符串&#xff0c;也可以参考。

用循环到i&#43;1的方法&#xff0c;比上面还能少写一行。

"""

for i in range(1,10):

for j in range(1, i &#43; 1):

print("{0} * {1} &#61; {2}".format(i, j, i * j),end&#61;"\t")

print()

"""

题目009&#xff1a;暂停一秒输出。

"""

def tm009():

"""

【个人备注】&#xff1a;time.sleep()&#xff0c;用过的都知道。

"""

import time

a &#61; time.time()

time.sleep(1)

b &#61; time.time()

print(b-a)

"""

题目010&#xff1a;暂停一秒输出&#xff0c;并格式化当前时间。

"""

def tm010():

"""

【个人备注】&#xff1a;用过几次&#xff0c;用过就忘。

"""

import time

a &#61; time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) # time.localtime()时间戳转化成时间元祖

print(a)

time.sleep(1)

b &#61; time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) # time.strftime()时间元祖转化成时间文本

print(b)

"""

题目011&#xff1a;古典问题&#xff1a;

有一对兔子&#xff0c;

从出生后第3个月起每个月都生一对兔子&#xff0c;

小兔子长到第三个月后每个月又生一对兔子。

假如兔子都不死。

问每个月的兔子总数为多少&#xff1f;

"""

def tm011():

"""

其实这道题就是斐波那契数列的由来。

【个人备注】&#xff1a;理清思路是关键&#xff0c;理解成满两个月后&#xff0c;每月都能生兔子&#xff0c;就好办了。

"""

m1&#61;1 # 满月

m2&#61;0 # 满俩月(下个月生兔子)

mm&#61;0 # 可以月月生兔子了

for i in range(1,10):

# 过了1个月后

mm &#61; mm&#43;m2 # 加入新增成年的兔子

m2 &#61; m1 # 满月的变成满俩月

m1 &#61; mm # 这个月新出生兔子

print(i,mm&#43;m1&#43;m2) # 每个月有多少对兔子

"""

题目012&#xff1a;判断101-200之间有多少个素数&#xff0c;并输出所有素数。

"""

def tm012():

"""

【个人备注】&#xff1a;按照素数不能被之前的素数整除&#xff0c;取200以内所有素数&#xff0c;然后取出101-200之间的部分。

"""

arr &#61; [2,3]

# 取200以内所有素数

for i in range(4,201):

for j in arr:

if i%j&#61;&#61;0:

break

# else: # 这是一开始我自己的写法&#xff0c;后来发现for可以直接接else子语句

# if j&#61;&#61;arr[-1]:

# arr.append(i)

else: # 迭代的对象成功迭代完&#xff0c;位于else的子句将执行&#xff1b;而如果在for循环中含有break时则直接终止循环&#xff0c;并不会执行else子句。

arr.append(i)

# 取出100-200之间部分

for i in range(len(arr)):

if arr[i]>100:

l &#61; arr[i:]

print(len(l),l)

break

"""

题目013&#xff1a;打印出所有的"水仙花数"&#xff0c;

所谓"水仙花数"是指一个三位数&#xff0c;其各位数字立方和等于该数本身。

例如&#xff1a;153是一个"水仙花数"&#xff0c;因为153&#61;1的三次方&#xff0b;5的三次方&#xff0b;3的三次方。

"""

def tm013():

"""

【个人备注】&#xff1a; // 取整&#xff0c;% 求余&#xff0c;**3 三次方。知道取整求余写法的就没问题。

"""

for i in range(100,1000):

b &#61; i//100 # 百位

s &#61; i%100//10 # 十位

g &#61; i%10 # 个位

if b**3&#43;s**3&#43;g**3&#61;&#61;i:

print(i)

"""

题目014&#xff1a;将一个正整数分解质因数。例如&#xff1a;输入90,打印出90&#61;2*3*3*5。

"""

def tm014():

"""

【个人备注】&#xff1a;拆到拆不动为止&#xff0c;类似012题。

"""

import math

num &#61; int(input("输入一个整数:"))

arr &#61; []

while num>1:

for i in range(2,int(math.sqrt(num))&#43;1): # 因为题目是一个没写范围正整数&#xff0c;开方可以有效减少该值过大时候的计算量

if num%i&#61;&#61;0:

arr.append(i)

num &#61; num//i

break

else:

arr.append(num)

break

print(arr)

"""

题目015&#xff1a;利用条件运算符的嵌套来完成此题&#xff1a;学习成绩>&#61;90分的同学用A表示&#xff0c;60-89分之间的用B表示&#xff0c;60分以下的用C表示。

"""

def tm015():

"""

【个人备注】&#xff1a;if-else基本用法&#xff0c;没啥说的。

"""

score &#61; float(input("输入一个成绩:"))

if score>&#61;90:

print("A")

elif score>&#61;60:

print("B")

else:

print("C")

"""

题目016&#xff1a;输出指定格式的日期。

"""

def tm016():

"""

【个人备注】&#xff1a;用的不多经常忘&#xff0c;整理了一下参考答案和一些转换

2019-5-29 以下日期时间代码仅供参考。

我将常用的日期时间方法&#xff0c;整理到了我的另一篇博客中

《Python3 日期文本互转&#xff0c;时间戳&#xff0c;时间差 以及 时区变换》

https://blog.csdn.net/watfe/article/details/84943732

"""

import time

print(time.time()) # 时间戳 1498539133.655

print(time.localtime()) # 时间元祖 tm_year&#61;2017, tm_mon&#61;6, tm_mday&#61;27, tm_hour&#61;12, tm_min&#61;53, tm_sec&#61;16, tm_wday&#61;1, tm_yday&#61;178, tm_isdst&#61;0

print(time.asctime()) # 时间的一种可读文本形式 "Tue Jun 27 12:53:50 2017"

print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())) # 按指定文本格式输出时间 "2017-06-27 13:00:57"

st &#61; time.localtime(time.time()) # 时间戳 转化成 时间元祖

st &#61; time.strptime("2018/1/23","%Y/%m/%d") # 时间文本 转化成 时间元祖

date &#61; time.strftime("%Y-%m-%d",st) # 时间元祖 转化成 时间文本 "%Y-%m-%d %H:%M:%S"

print(date) # 前面两条函数配合着用&#xff0c;相当于将时间文本重新格式化。

# 另外我们可以通过datetime模块来计算时间差&#xff0c;例如&#xff1a;

import datetime

dt1 &#61; datetime.datetime.fromtimestamp(1517302458)

print(dt1,type(dt1))

dt2 &#61; datetime.datetime.now()

print(dt2)

print("相差%d天零%.1f个小时"%((dt2-dt1).days,(dt2-dt1).seconds/60/60))

"""

2018-01-30 16:54:18

2018-02-01 16:27:47.524774

相差1天零23.6个小时

"""

# 注意上面的日期虽然看起来是文本&#xff0c;但实际上是datetime类型的。

# 可以通过时间戳/时间文本转换得到&#xff0c;然后才能进行日期时间计算。

d1 &#61; datetime.datetime.strptime("2017-10-16 19:21:22", "%Y-%m-%d %H:%M:%S")

"""

题目017&#xff1a;输入一行字符&#xff0c;分别统计出其中英文字母、空格、数字和其它字符的个数。

"""

def tm017():

"""

【个人备注】&#xff1a;本来想写成这种格式来着

import string

if c in string.ascii_letters: # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

if c &#61;&#61; " ": # 空格

if c in string.digits: # 0123456789

看了参考答案才知道有现成的函数可以用。

其实随便哪种都行&#xff0c;甚至直接把一串字母粘上去看起来更直接。

"""

s &#61; input("input a string:\n")

letters,space,digit,others &#61; 0,0,0,0

for c in s:

if c.isalpha():

letters &#43;&#61; 1

elif c.isspace():

space &#43;&#61; 1

elif c.isdigit():

digit &#43;&#61; 1

else:

others &#43;&#61; 1

print("char &#61; %d,space &#61; %d,digit &#61; %d,others &#61; %d" % (letters,space,digit,others))

"""

题目018&#xff1a;求s&#61;a&#43;aa&#43;aaa&#43;aaaa&#43;aa...a的值&#xff0c;其中a是一个数字。例如2&#43;22&#43;222&#43;2222&#43;22222(此时共有5个数相加)&#xff0c;几个数相加由键盘控制。

"""

def tm018():

"""

【个人备注】&#xff1a;答案给的解法很多种&#xff0c;但是我还是认为我写的方法最简单。

2&#43;22&#43;222&#43;2222&#43;22222

可以理解为&#xff1a;

20000 &#43; 2*2000 &#43; 3*200 &#43; 4*20 &#43; 5*2

也就是&#xff1a;

1*2*10^4 &#43; 2*2*10^3 &#43; 3*2*10^2 &#43; 4*2*10^1 &#43; 5*2*10^0

所以简单迭代就可以出结果

"""

a &#61; 2

t &#61; 5

num &#61; 0

for i in range(1,t&#43;1):

num&#43;&#61;i*a*(10**(t-i))

print(num)

"""

题目019&#xff1a;一个数如果恰好等于它的因子之和&#xff0c;这个数就称为"完数"。例如6&#61;1&#xff0b;2&#xff0b;3.编程找出1000以内的所有完数。

"""

def tm019():

"""

【个人备注】&#xff1a;题意看的不是太懂&#xff0c;于是百度了一下&#xff1a;完数就是除了自身之外的所有约数之和等于他本身。

第一个完全数是6&#xff0c;它有约数1、2、3、6&#xff0c;除去它本身6外&#xff0c;其余3个数相加&#xff0c;1&#43;2&#43;3&#61;6。

第二个完全数是28&#xff0c;它有约数1、2、4、7、14、28&#xff0c;除去它本身28外&#xff0c;其余5个数相加&#xff0c;1&#43;2&#43;4&#43;7&#43;14&#61;28。

终于看懂了题意。

先求出所有约数&#xff0c;然后求和比一下是否相等就行了&#xff0c;没有难度

"""

for num in range(1,1000):

arr &#61; []

for i in range(1,num):

if num%i&#61;&#61;0:

arr.append(i)

if sum(arr)&#61;&#61;num:

print(num,arr)

"""

题目020&#xff1a;一球从100米高度自由落下&#xff0c;每次落地后反跳回原高度的一半&#xff1b;再落下&#xff0c;求它在第10次落地时&#xff0c;共经过多少米&#xff1f;第10次反弹多高&#xff1f;

"""

def tm020():

"""

【个人备注】&#xff1a;很简单&#xff0c;没啥说的

"""

total &#61; 0

m &#61; 100 # 第一次落地&#xff0c;经过了一百米

total &#43;&#61; m

for i in range(10-1): # 之后9次弹起到落地

m &#61; m/2 # 弹起的高度

total &#43;&#61; 2*m # 弹起然后重新落地&#xff0c;一共经过的距离

print(total)

print(m/2)

"""

题目021&#xff1a;猴子吃桃问题

猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不瘾&#xff0c;又多吃了一个

第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时&#xff0c;见只剩下一个桃子了。

求第一天共摘了多少。

"""

def tm021():

"""

【个人备注】&#xff1a;第十天num&#61;1个&#xff0c;第九天必然是4个&#xff1a;4/2-1&#61;1&#xff0c;也就是(num&#43;1)*2&#61;4。

做这种题&#xff0c;先用算数式列出来&#xff0c;然后用代码描述就行了。

"""

num &#61; 1

for i in range(10-1):

num &#61; (num&#43;1)*2

print(num)

"""

题目022&#xff1a;两个乒乓球队进行比赛&#xff0c;各出三人。

甲队为a,b,c三人&#xff0c;乙队为x,y,z三人。

已抽签决定比赛名单。有人向队员打听比赛的名单。

a说他不和x比&#xff0c;c说他不和x,z比&#xff0c;请编程序找出三队赛手的名单。

"""

def tm022():

"""

【个人备注】&#xff1a;关键是将抽象化&#xff0c;将问题抽象成代码方式。

我的解题思路&#xff0c;是用排列组合函数&#xff0c;列出方案&#xff0c;然后排除。

而官方解答里面有一个纯粹的for循环加if的求解方式&#xff0c;

更抽象一些&#xff0c;用了一个很常用固定范式&#xff0c;直接拿来解题了。

稍微对其抽象的方法注释了一下。

"""

import itertools

jia &#61; ["a","b","c"]

yi &#61; ["x","y","z"]

arr &#61; list(itertools.permutations(yi,3)) # 面对甲队a,b,c时&#xff0c;乙队所有排列 [("x", "y", "z"), ("x", "z", "y"), ("y", "x", "z"), ("y", "z", "x"), ("z", "x", "y"), ("z", "y", "x")]

arr &#61; [[jia[i]&#43;a[i] for i in range(3)] for a in arr] #将a,b,c写上&#xff0c;得到所有对阵组合 [["ax", "by", "cz"], ["ax", "bz", "cy"], ["ay", "bx", "cz"], ["ay", "bz", "cx"], ["az", "bx", "cy"], ["az", "by", "cx"]]

for i in arr:

if "ax" in i:

pass

elif "cx" in i or "cz" in i:

pass

else:

print(i) # 得到 ["az", "bx", "cy"]

def tm022_1():

for a in ["x","y","z"]: # a在x,y,z中挑一个打

for b in ["x", "y", "z"]: # b在x,y,z中挑一个打

for c in ["x", "y", "z"]: # c在x,y,z中挑一个打 三层总计27种打法

if a!&#61;b and b!&#61;c and c!&#61;a: # a,b,c不能挑同一个人 缩减到6种打法

if a!&#61;"x" and c!&#61;"x" and c!&#61;"z": # 依据题意不能ax,cx,cz 缩减到1种打法

print("a"&#43;a,"b"&#43;b,"c"&#43;c)

"""

题目023&#xff1a;

打印出如下图案(菱形):

*

***

*****

*******

*****

***

*

"""

def tm023():

"""

【个人备注】&#xff1a;想到了绝对值&#xff0c;

然后将[0,1,2,3,4,5,6]变成了[3,2,1,0,1,2,3]&#xff0c;也就是每行左边空格数。

"""

num &#61; 7

for i in range(num):

blank &#61; abs(num//2-i)

print(" "*blank&#43;"*"*(num-2*blank)&#43;" "*blank)

"""

题目024&#xff1a;有一分数序列&#xff1a;2/1&#xff0c;3/2&#xff0c;5/3&#xff0c;8/5&#xff0c;13/8&#xff0c;21/13...求出这个数列的前20项之和。

"""

def tm024():

"""

没啥好说的

"""

a,b,num &#61; 2,1,0

for i in range(20):

num&#43;&#61;a/b

a&#61;a&#43;b

b&#61;a-b

print(num)

"""

题目025&#xff1a;求1&#43;2!&#43;3!&#43;...&#43;20!的和。

"""

def tm025():

"""

【个人备注】&#xff1a;实现起来很简单。

下面官方的代码&#xff0c;比我写的更简洁。

"""

s,t&#61;0,1

for n in range(1,21):

t*&#61;n

s&#43;&#61;t

print(s)

"""

题目026&#xff1a;利用递归方法求5!。

"""

def fac(x):

if x>1:

return x*fac(x-1)

else:

return x

def tm026():

"""

【个人备注】&#xff1a;按题目要求&#xff0c;公式f(n)&#61;n*f(n-1)&#xff0c;递归调用求解。

"""

print(fac(5))

"""

题目027&#xff1a;利用递归函数调用方式&#xff0c;将所输入的5个字符&#xff0c;以相反顺序打印出来。

"""

def output(s,l):

if l&#61;&#61;0:

return

print (s[l-1])

output(s,l-1)

def tm027():

"""

【个人备注】&#xff1a;直接从官网复制&#xff0c;不喜欢递归。

"""

s &#61; input("Input a string:")

l &#61; len(s)

output(s,l)

"""

题目028&#xff1a;有5个人坐在一起&#xff0c;

问第五个人多少岁&#xff1f;他说比第4个人大两岁。

问第4个人&#xff0c;他说比第3个人大两岁。

问第3个人&#xff0c;又说比第2个人大两岁。

问第2个人&#xff0c;说比第1个人大两岁。

最后问第一个人&#xff0c;他说是10岁。

请问第五个人多大&#xff1f;

"""

def age(x):

if x>1:

return 2&#43;age(x-1)

else:

return 10

def tm028():

"""

【个人备注】&#xff1a;官网给的还是递归方法&#xff0c;因为不用递归的话就是个口算题。

"""

print(age(5))

"""

题目029&#xff1a;给一个不多于5位的正整数&#xff0c;要求&#xff1a;一、求它是几位数&#xff0c;二、逆序打印出各位数字。

"""

def tm029():

"""

【个人备注】&#xff1a;用Python&#xff0c;So Easy~

list倒序可以用list.reverse()&#xff1b;

字符串就只能用步长&#61;-1的方式来倒序了。

"""

num &#61; 12345

s &#61; str(num)

print(len(s))

print(s[::-1])

"""

题目030&#xff1a;一个5位数&#xff0c;判断它是不是回文数。即12321是回文数&#xff0c;个位与万位相同&#xff0c;十位与千位相同。

"""

def tm030():

"""

【个人备注】&#xff1a;没啥可说的。

"""

num &#61; 12321

s &#61; str(num)

for i in range(len(s)//2):

if s[i]!&#61;s[-i-1]:

print(False)

break

else:

print(True)

"""

题目031&#xff1a;请输入星期几的第一个字母来判断一下是星期几&#xff0c;如果第一个字母一样&#xff0c;则继续判断第二个字母。

"""

def tm031():

"""

【个人备注】&#xff1a;按照题意要求实现了就行

"""

week &#61; ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]

inp &#61; ""

while 1:

arr &#61; []

inp &#61; inp&#43;input("请输入一个字母:")

for day in week: # 挑出满足输入的星期

if inp&#61;&#61;day[:len(inp)]:

arr.append(day)

if len(arr)&#61;&#61;1: # 只剩一个&#xff0c;说明唯一&#xff0c;可以输出结果

print("以%s开头的单词是:%s"%(inp,arr[0]))

inp&#61;""

elif len(arr)&#61;&#61;0: # 一个都没有说明输错了&#xff0c;需要重新输入

print("没有%s开头的单词"%inp)

inp&#61;""

"""

题目032&#xff1a;按相反的顺序输出列表的值。

"""

def tm032():

"""

【个人备注】&#xff1a;之前已经做过了

"""

# 方法一

a &#61; [1,2,3,4,5]

print(a[::-1])

# 方法二

a &#61; [1,2,3,4,5]

a.reverse()

print(a)

# 方法三

a &#61; [1,2,3,4,5]

a.sort(reverse&#61;True)

print(a)

"""

题目033&#xff1a;按逗号分隔列表。

"""

def tm033():

"""

【个人备注】&#xff1a;一开始没看懂题目项干啥&#xff0c;直接print(list)不就是逗号分隔么

实际上题目的意思是&#xff0c;合并列表项&#xff0c;以逗号为间隔

"""

a &#61; ["1","2","3","4","5"]

print(",".join(a))

"""

题目034&#xff1a;练习函数调用。

"""

def tm034():

"""

【个人备注】&#xff1a;没头没尾的一个题&#xff0c;之前的递归实际上就是函数的调用了。不写了。

"""

pass

"""

题目035&#xff1a;文本颜色设置。

"""

def tm035():

"""

【个人备注】&#xff1a;感觉不像是不是python的题。

"""

pass

"""

题目036&#xff1a;求100之内的素数。

"""

def tm036():

"""

【个人备注】&#xff1a;素数就是质数

"""

arr &#61; [2]

for i in range(3,100):

for j in arr:

if i%j&#61;&#61;0:

break

else:

arr.append(i)

print(arr)

"""

题目037&#xff1a;对10个数进行排序。

"""

def tm037():

"""

【个人备注】&#xff1a;实际上考察的是排序。揣测了一下题意&#xff0c;写了两种解法

"""

# 方法1&#xff0c;python解法

a &#61; [1,5,7,3,2,4,9,10,6,8]

a.sort()

print(a)

# 方法2&#xff0c;常规解法

a &#61; [1,5,7,3,2,4,9,10,6,8]

b &#61; [a[0]]

for num in a[1:]:

for i in range(len(b)):

if num

b.insert(i,num)

break

else:

b.append(num)

print(b)

"""

题目038&#xff1a;求一个3*3矩阵主对角线元素之和。

"""

def tm038():

"""

【个人备注】&#xff1a;思路比较简单&#xff0c;n*n的矩阵都可以用这个求解。

"""

a &#61; [[1,2,3],[4,5,6],[7,8,9]]

s &#61; 0

n &#61; len(a)

for i in range(n): # 左上到右下一条线

s&#43;&#61;a[i][i]

for i in range(n): # 右上到左下一条线

s&#43;&#61;a[i][n-i-1]

if n%2&#61;&#61;1: # 如果是奇数&#xff0c;删掉重复计算的中间点

s-&#61;a[n//2][n//2]

print(s)

"""

题目039&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。

"""

def tm039():

"""

【个人备注】&#xff1a;037题中刚写过。

"""

aaa &#61; [1,5,8,14,28,39,60,89,134,324,612,900]

b &#61; 555

for a in aaa:

if b

aaa.insert(aaa.index(a),b)

break

else:

aaa.append(b)

print(aaa)

"""

题目040&#xff1a;将一个数组逆序输出。

"""

def tm040():

"""

【个人备注】&#xff1a;就是032题&#xff0c;重复了。

"""

pass

"""

题目041&#xff1a;模仿静态变量的用法。

"""

def tm041():

"""

【个人备注】&#xff1a;不是很清楚什么意思&#xff0c;直接看了官网的解答。

如果是函数中的局部变量&#xff0c;每次调用函数都会初始化。

而类中的变量&#xff0c;创建类的时候初始化&#xff0c;每次执行类中的函数的时候&#xff0c;不会初始化类变量。

看起来是想说这么个意思。

"""

def varfunc():

var &#61; 0

print("var &#61; %d" % var)

var &#43;&#61; 1

if __name__ &#61;&#61; "__main__":

for i in range(3):

varfunc()

# StaticVar作为类的一个属性&#xff0c;相当于静态变量

class Static:

StaticVar &#61; 5

def varfunc(self):

self.StaticVar &#43;&#61; 1

print(self.StaticVar)

print(Static.StaticVar)

a &#61; Static()

for i in range(3):

a.varfunc()

"""

题目042&#xff1a;学习使用auto定义变量的用法。

"""

def tm042():

"""

【个人备注】&#xff1a;同样没看懂题意&#xff0c;看了下官网答案

发现实际是想说变量作用域&#xff0c; python是有分局部变量、全局变量的等区分的。

"""

num &#61; 2

def autofunc():

num &#61; 1

print("internal block num &#61; %d"%num)

num &#43;&#61; 1

for i in range(3):

print("The num &#61; %d"%num)

num &#43;&#61; 1

autofunc()

"""

以上实例输出结果为&#xff1a;

The num &#61; 2

internal block num &#61; 1

The num &#61; 3

internal block num &#61; 1

The num &#61; 4

internal block num &#61; 1

"""

"""

题目043&#xff1a;模仿静态变量(static)另一案例。

"""

def tm043():

"""

【个人备注】&#xff1a;官网的答案和041没啥区别&#xff0c;又来一遍

"""

"""

题目044&#xff1a;两个3*3的矩阵&#xff0c;实现其对应位置的数据相加&#xff0c;并返回一个新矩阵&#xff1a;

X &#61; [[12,7,3],

[ 4,5,6],

[ 7,8,9]]

Y &#61; [[5,8,1],

[ 6,7,3],

[ 4,5,9]]

"""

def tm044():

"""

【个人备注】&#xff1a;自己写了一个&#xff0c;但是印象里python是有矩阵计算工具的。

官网就有人用该工具numpy写了一下&#xff0c;很简洁。

"""

x &#61; [[12,7,3],[4,5,6],[7,8,9]]

y &#61; [[5,8,1],[6,7,3],[4,5,9]]

z &#61; x[:]

for i in range(3):

for j in range(3):

z[i][j]&#61;x[i][j]&#43;y[i][j]

print(z)

def tm044_1():

import numpy # pip install numpy 需要安装模块

x &#61; numpy.array([[12,7,3],[4,5,6],[7,8,9]])

y &#61; numpy.array([[5,8,1],[6,7,3],[4,5,9]])

z &#61; x&#43;y

print(z)

"""

题目045&#xff1a;统计 1 到 100 之和。

"""

def tm045():

"""

【个人备注】&#xff1a;简单&#xff0c;但官网有人写的更简单

"""

s &#61; 0

for i in range(1,101):

s&#43;&#61;i

print(s)

# 更简洁的方法

print(sum(range(1,101)))

"""

题目046&#xff1a;求输入数字的平方&#xff0c;如果平方运算后小于 50 则退出。

"""

def tm046():

"""

【个人备注】&#xff1a;简单

"""

while 1:

x&#61; input("输入数字得到平方值:")

print(x*x)

if x*x<50:

break

"""

题目047&#xff1a;两个变量值互换。

"""

def tm047():

"""

【个人备注】&#xff1a;很简单

"""

a,b&#61;1,2

a,b&#61;b,a

print(a,b)

"""

题目048&#xff1a;数字比较。

"""

def tm048():

"""

【个人备注】&#xff1a;看了一眼官网答案&#xff0c;简单到懒得写。以下官网答案。

"""

i &#61; 10

j &#61; 20

if i > j:

print("%d 大于 %d" % (i,j))

elif i &#61;&#61; j:

print("%d 等于 %d" % (i,j))

elif i

print("%d 小于 %d" % (i,j))

else:

print("未知")

"""

题目049&#xff1a;使用lambda来创建匿名函数。

"""

def tm049():

"""

【个人备注】&#xff1a;用的不多又忘了&#xff0c;看了一下网上的教程&#xff0c;整理了一下。

"""

#lambda函数也叫匿名函数&#xff0c;即&#xff0c;函数没有具体的名称。先来看一个最简单例子&#xff1a;

def f(x):

return x**2

print(f(4))

#Python中使用lambda的话&#xff0c;写成这样

g &#61; lambda x:x**2

print(g(4))

#lambda存在意义就是对简单函数的简洁表示。

#lambda语句中&#xff0c;冒号前是参数&#xff0c;可以有多个&#xff0c;用逗号隔开&#xff0c;冒号右边的返回值。

#常搭配内置函数map、filter、reduce&#xff0c;都是应用于序列的内置函数。常见的序列包括list、tuple、str。

#map(func, *iterables) --> map object

#filter(function or None, iterable) --> filter object

#reduce(function, sequence[, initial]) -> value

foo &#61; [2, 18, 9, 22, 17, 24, 8, 12, 27]

print(list(map(lambda x: x * 2 &#43; 10, foo))) # 映射 [14, 46, 28, 54, 44, 58, 26, 34, 64]

print(list(filter(lambda x: x % 3 &#61;&#61; 0, foo))) # 过滤 [18, 9, 24, 12, 27]

from functools import reduce # 在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里

print(reduce(lambda x, y: x &#43; y, foo)) # 累积 139

"""

题目050&#xff1a;输出一个随机数。

"""

def tm050():

"""

【个人备注】&#xff1a;之前学习随机的时候整理的东西&#xff0c;用到时候来找就行了

"""

import random

# 随机数操作

random.random() # 0.85415370477785668 # 随机一个[0,1)之间的浮点数

random.uniform(0, 100) # 18.7356606526 # 随机一个[0,100]之间的浮点数

random.randrange(0, 100, 2) # 44 # 随机一个[0,100)之间的偶数

random.randint(0, 100) # 22 # 随机一个[0,100]之间的整数

# 随机字符操作

seed &#61; "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!&#64;#$%^&*()_&#43;&#61;-" # 任意字符串(作为随机字符种子库)

random.choice(seed) # "d" # 随机一个字符

random.sample(seed, 3) # ["a", "d", "b"] # 随机多个字符(字符可重复)

"".join(random.sample(seed,3)) # "^f^" # 随机指定长度字符串(字符可重复)

# 随机列表操作

random.shuffle(list) # 列表中的元素打乱

"""

题目051~053、055&#xff1a;

学习使用按位与 &

学习使用按位或 |

学习使用按位异或 ^

学习使用按位取反 ~

"""

def tm051(): # tm052 # tm053 # tm055

"""

【个人备注】&#xff1a;大概看了一下资料&#xff0c;按位操作可以通过bin()函数转换为二进制从而实现。

感觉二进制的计算如果不是学加密之类的基本用不上。

所以这一题&#xff0c;大概写了集合的用法&#xff0c;&、|在python中是集合set()才用的符号

两个列表求交集并集&#xff0c;通常也都是转换为集合&#xff0c;然后进行计算的。

"""

# 可迭代变量转换为集合形式

x &#61; set("runoob")

y &#61; set("google")

print(x, y) # 重复的被删除 {"n", "o", "b", "u", "r"} {"o", "g", "e", "l"}

# 集合的交集、并集、差集

print(x & y) # 交集 {"o"}

print(x | y) # 并集 {"e", "o", "g", "l", "u", "n", "b", "r"}

print(x - y) # 差集 {"n", "b", "u", "r"}

# 当然也可以写成函数形式&#xff0c;不过确实没有上面符号好记。

print(x.intersection(y))

print(x.union(y))

print(x.difference(y))

"""

题目054&#xff1a;取一个整数a从右端开始的4-7位。

"""

def tm054():

"""

【个人备注】&#xff1a;官网答案不对

"""

a &#61; 123456789

b &#61; str(a)

print(b[-7:-3]) # 写的时候注意一下python切片是[-7:-4)左闭右开的&#xff0c;不包含[-4]的&#xff0c;所以要写成-3才能取到

"""

题目056&#xff1a;画图&#xff0c;学用circle画圆形。

题目057&#xff1a;画图&#xff0c;学用line画直线。

题目058&#xff1a;画图&#xff0c;学用rectangle画方形。

题目059&#xff1a;画图&#xff0c;综合例子。

题目063&#xff1a;画椭圆。

题目064&#xff1a;利用ellipse 和 rectangle 画图。

题目065&#xff1a;一个最优美的图案。

所有画图题pass 有爱的自己参照下面&#xff0c;将官网答案改成python3运行即可。

"""

def tm056(): # tm057、tm058、tm059、tm063、tm064、tm065、

"""

【个人备注】&#xff1a;这个技能感觉用不上啊。

复制了官网Python2答案&#xff0c;调整一下放到python3上成功运行了。

"""

import tkinter

canvas &#61; tkinter.Canvas(width&#61;600, height&#61;500, bg&#61;"yellow")

canvas.pack(expand&#61;"yes", fill&#61;"both")

k &#61; 1

j &#61; 1

for i in range(0,26):

canvas.create_oval(300 - k,250 - k,300 &#43; k,250 &#43; k, width&#61;1)

k &#43;&#61; j

j &#43;&#61; 0.6

canvas.mainloop()

"""

题目060&#xff1a;计算字符串长度。

"""

def tm060():

"""

【个人备注】&#xff1a;无

"""

a &#61; "aegweg"

print(len(a))

"""

题目061&#xff1a;打印出杨辉三角形(要求打印出10行如下图)。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

"""

def tm061():

"""

【个人备注】&#xff1a;感觉自己写的比官网简单好懂

"""

arr &#61; [1]

print(1)

while len(arr)<10: # [1,1]

a &#61; [0]&#43;arr # [0,1,1]

b &#61; arr&#43;[0] # [1,1,0]

arr &#61; [a[i]&#43;b[i] for i in range(len(a))] # [1,2,1]

s &#61; [str(i) for i in arr]

print(" ".join(s))

"""

题目062&#xff1a;查找字符串。

"""

def tm062():

s &#61; "abcde"

print(s.find("c"))

"""

题目066&#xff1a;输入3个数a,b,c&#xff0c;按大小顺序输出。

"""

def tm066():

arr&#61;[]

for i in range(3):

a &#61; input("请输入数字:")

arr.append(int(a))

arr.sort(reverse&#61;True)

print("从大到小",arr)

"""

题目067&#xff1a;输入数组&#xff0c;最大的与第一个元素交换&#xff0c;最小的与最后一个元素交换&#xff0c;输出数组。

"""

def tm067():

"""

【个人备注】&#xff1a;感觉自己写的比官网简单好懂&#xff0c;直接用python思维写&#xff0c;确实很方便

"""

a &#61; [6,3,10,2,5,1,4,7,9,8]

i &#61; a.index(max(a))

a[0],a[i] &#61; a[i],a[0]

i &#61; a.index(min(a))

a[-1],a[i] &#61; a[i],a[-1]

print(a)

"""

题目068&#xff1a;有n个整数&#xff0c;使其前面各数顺序向后移m个位置&#xff0c;最后m个数变成最前面的m个数

"""

def tm068():

a &#61; [1,2,3,4,5,6,7,8,9,10]

m &#61; 3

b &#61; a[-m:]&#43;a[:-m]

print(b)

"""

题目069&#xff1a;有n个人围成一圈&#xff0c;顺序排号。

从第一个人开始报数(从1到3报数)&#xff0c;凡报到3的人退出圈子&#xff0c;问最后留下的是原来第几号的那位。

"""

def tm069():

"""

【个人备注】&#xff1a;python基础变量没有这种圈状循环的。

最直接的方法是列表&#xff0c;点队尾再从头开始。

缺点是列表删除中间项&#xff0c;后面的索引值都会变&#xff0c;需要计算。

所以我换了种方法&#xff0c;

把问题抽象成排队进门的问题

完全不考虑索引问题。

"""

# 初始化

n &#61; 34

arr &#61; list(range(1,n&#43;1)) # 所有人门外站成一队【a】,进门后依旧按序站好【b】

count,a,b &#61; 0,arr,[]

# 开始解题

while len(a&#43;b)>1: # 循环直到只剩1人

num,count&#61;a.pop(0),count&#43;1 # 排队进门&#xff0c;每进一人【a.pop】&#xff0c;按一下计数器

if count%3!&#61;0:b.append(num) # 进门后依旧按序站好【b.append】&#xff0c;计数器逢3淘汰。

if a&#61;&#61;[]:a,b&#61;b,[] # 如果门外没人了【a&#61;[]】&#xff0c;所有人重新到门外站好【a&#61;b】

print(a[0])

"""

题目070&#xff1a;写一个函数&#xff0c;求一个字符串的长度&#xff0c;在main函数中输入字符串&#xff0c;并输出其长度。

"""

def tm070():

"""

【个人备注】&#xff1a;简单

"""

def getlength(string):

return len(string)

if __name__ &#61;&#61; "__main__":

x &#61; "abcde"

print(getlength(x))

"""

题目071&#xff1a;编写input()和output()函数输入&#xff0c;输出5个学生的数据记录。

"""

def tm071():

"""

【个人备注】&#xff1a;用字典类型随便写写

"""

def inp(data):

name &#61; input("输入学生姓名&#xff1a;")

score &#61; input("输入学生成绩&#xff1a;")

data[name]&#61;score

print("成功录入")

return data

def outp(data):

name &#61; input("输入学生姓名&#xff1a;")

print("该学生的成绩是&#xff1a;",data.get(name))

return data

if __name__ &#61;&#61; "__main__":

data &#61; {}

while 1:

a &#61; input("输入/输出学生成绩(i/o)&#xff1a;")

if a&#61;&#61;"i":

data &#61; inp(data)

elif a&#61;&#61;"o":

data &#61; outp(data)

else:

print("输入值不对")

"""

题目072&#xff1a;创建一个链表。

题目073&#xff1a;反向输出一个链表。

"""

def tm072():

"""

【个人备注】&#xff1a;已经几乎忘了链表了&#xff0c;网上搜了一下终于想起链表是什么来着。

这种底层的东西&#xff0c;完全没必要用python去模拟

http://www.newsmth.net/nForum/#!article/Python/73818?p&#61;10

"""

pass

"""

题目074&#xff1a;列表排序及连接。

题目079&#xff1a;字符串排序。(也是一样的)

"""

def tm074(): # tm079

"""

【个人备注】&#xff1a;之前都用过

"""

a &#61; [3,2,1]

b &#61; [4,5,6]

a.sort()

print(a)

print(a&#43;b)

"""

题目075&#xff1a;放松一下&#xff0c;算一道简单的题目。

"""

def tm075():

"""

【个人备注】&#xff1a;Σ( ° △ °|||)︴&#xff0c;不是我偷工减料&#xff0c;题目就是这个&#xff0c;后面太监了

"""

pass

"""

题目076&#xff1a;编写一个函数&#xff0c;输入n为偶数时&#xff0c;调用函数求1/2&#43;1/4&#43;...&#43;1/n,当输入n为奇数时&#xff0c;调用函数1/1&#43;1/3&#43;...&#43;1/n

"""

def tm076():

"""

【个人备注】&#xff1a;学了lambda想耍一下&#xff0c;结果发现官网写的比我还简洁&#xff01;

"""

n &#61;17

fenmu &#61; range(2,n&#43;1,2) if n%2&#61;&#61;0 else range(1,n&#43;1,2)

s &#61; sum(map(lambda x:1/x,fenmu))

print(s)

# 官网参考答案

n &#61;17

ls &#61; sum([1/i for i in range(n,0,-2)])

print(ls)

"""

题目077&#xff1a;循环输出列表

"""

def tm077():

"""

【个人备注】&#xff1a;无需动脑

"""

l &#61; [1,2,3,4,5]

for i in l:

print(i)

"""

题目078&#xff1a;找到年龄最大的人&#xff0c;并输出。

person &#61; {"li":18,"wang":50,"zhang":20,"sun":22}

"""

def tm078():

"""

【个人备注】&#xff1a;官网的答案也基本一样。

"""

person &#61; {"li":18,"wang":50,"zhang":20,"sun":22}

name,age&#61;"",0

for p in person.keys():

if person.get(p)>age:

name,age&#61;p,person.get(p)

print(name,age)

"""

题目080&#xff1a;海滩上有一堆桃子&#xff0c;五只猴子来分。

第一只猴子把这堆桃子平均分为五份&#xff0c;多了一个&#xff0c;

这只猴子把多的一个扔入海中&#xff0c;拿走了一份。

第二只猴子把剩下的桃子又平均分成五份&#xff0c;又多了一个&#xff0c;

它同样把多的一个扔入海中&#xff0c;拿走了一份&#xff0c;

第三、第四、第五只猴子都是这样做的&#xff0c;

问海滩上原来最少有多少个桃子&#xff1f;

"""

def tm080():

"""

【个人备注】&#xff1a;不考虑解方程什么的&#xff0c;问题实际上归结成

“整数n&#xff0c;迭代5次之每次都能得到整数&#xff0c;求n的最小值”问题。

一开始想简单了&#xff0c;以为最后的猴子只拿一个&#xff0c;代进去一算发现不是整数。

于是直接暴力输入&#xff0c;一个个试直到3121&#xff0c;得到整除。

当然也可以反着试&#xff0c;假设最后一个猴子拿到n个桃子&#xff0c;remain &#61; lambda t:t/4*5&#43;1&#xff0c;

一个个试直到1020&#xff0c;得到整除&#xff0c;也能得出结论&#xff0c;最开始的猴子拿了3121个桃子。

"""

for total in range(10000):

t &#61; total # 沙滩上有t个桃子

remain &#61; lambda t:(t-1)/5*4 # 每次分桃后剩余桃子。

for i in range(5):

t &#61; remain(t)

if t%1!&#61;0:break # 如果不是整数&#xff0c;说明不符合题意

else:

print(total,t) # 5次都能得到整数&#xff0c;第一个猴子3121&#xff0c;五个猴子拿完沙滩剩余1020个。

break

"""

题目081&#xff1a;809*??&#61;800*??&#43;9*?? 其中??代表的两位数,

809*??为四位数&#xff0c;8*??的结果为两位数&#xff0c;9*??的结果为3位数。

求??代表的两位数&#xff0c;及809*??后的结果。

"""

def tm081():

"""

假设??为x&#xff0c;因为8*x<100&#xff0c;所以x<13。

实际上因为9*x>100&#xff0c;得到x>11&#xff0c;很明显x就是12&#xff0c;题意给的过于充分了。

程序如下&#xff1a;

"""

l &#61; lambda x:len(str(x))

for i in range(20):

if l(809*i)&#61;&#61;4 and l(8*i)&#61;&#61;2 and l(9*i)&#61;&#61;3:

x &#61; i

print(x)

print(809*x&#61;&#61;800*x&#43;9*x)

print(809*x)

"""

题目082&#xff1a;八进制转换为十进制

"""

def tm082():

"""

【个人备注】&#xff1a;知道了这些&#xff0c;你就可以随意转了。

"""

print(bin(10)) #十转二

print(oct(10)) #十转八

print(hex(10)) #十转16

print(int("10",8)) #八转十

print(int("10",2)) #二转十

print(int("10",16)) #16转十

"""

题目083&#xff1a;求0—7所能组成的奇数个数。

"""

def tm083():

"""

【个人备注】&#xff1a;没说组成几位数或是否重复使用。假设1-8位都可以&#xff0c;且不能重复使用。

直接用排列函数&#xff0c;累加然后去重&#xff0c;就得到答案了。

"""

s &#61; [i for i in "01234567"]

import itertools

arr &#61; []

for i in range(1,9):

a &#61; list(itertools.permutations(s,i)) # 长度1-8左右排列

l &#61; list(map(lambda x:int("".join(x)),a)) # 整理成数字形式(避免出现02这种情况&#xff0c;02实际上就是2)

arr&#43;&#61;l

print(i,len(l))

arr1 &#61; set(arr) # 去重

arr2 &#61; list(filter(lambda x:x%2&#61;&#61;1,arr1)) # 只留奇数

print(len(arr),len(arr1),len(arr2)) # 答案是46972

def tm083_1():

"""

【个人备注】&#xff1a; 因为也不知道对错&#xff0c;又用穷举法验证验证了一下

"""

count &#61; 0

for i in range(76543211): # 能组成的最大数字也就是76543210了

s &#61; str(i) # 转换成文本形式s

if "8" in s or "9" in s: # s中不包含8和9

continue

else:

cs &#61; set([c for c in s])# s中的数字去重&#xff0c;如果去重后和去重前长度一致&#xff0c;说明数字没有重复使用

if len(s)&#61;&#61;len(cs) and s[-1] in "1357": # 各位不重复且是奇数

count&#43;&#61;1

if i%100000&#61;&#61;0:print(i,count) # 每10万个输出一下结果&#xff0c;避免程序卡死发现不了。

print(count) # 公司电脑比较差劲&#xff0c;跑了2分钟多&#xff0c;也出结果了46972。

"""

题目084&#xff1a;连接字符串。

"""

def tm084():

"""

【个人备注】&#xff1a; join的用法&#xff0c;之前都已经用过很多次了

"""

pass

"""

题目085&#xff1a;输入一个奇数&#xff0c;然后判断最少几个 9 除于该数的结果为整数。

"""

def tm085():

"""

【个人备注】&#xff1a;挨个试直到整除为止即可。

"""

x &#61; int(input("input a number:"))

for i in range(1,61):

if int("9"*i)%x&#61;&#61;0:

print(i)

break

else:

print("no way")

"""

题目086&#xff1a;两个字符串连接程序。

"""

def tm086():

# 直接‘&#43;’就行

pass

"""

题目087&#xff1a;回答结果(结构体变量传递)。

"""

def tm087():

"""

没题目没得做

"""

pass

"""

题目088&#xff1a;读取7个数(1—50)的整数值&#xff0c;每读取一个值&#xff0c;程序打印出该值个数的&#xff0a;。

"""

def tm088():

# 没啥说的

for i in [1,4,5,14,22]:

print("*"*i)

"""

题目089&#xff1a;某个公司采用公用电话传递数据&#xff0c;数据是四位的整数&#xff0c;

在传递过程中是加密的&#xff0c;加密规则如下&#xff1a;

每位数字都加上5,然后用和除以10的余数代替该数字&#xff0c;再将第一位和第四位交换&#xff0c;第二位和第三位交换。

"""

def tm089():

x,c &#61; 1234,5

q,b,s,g &#61; x//1000,x//100%10,x//10%10,x%10

s &#61; (g&#43;c)%10*1000&#43;(s&#43;c)%10*100&#43;(b&#43;c)%10*10&#43;(q&#43;c)%10

print(s)

"""

题目090&#xff1a;列表使用实例。

"""

def tm090():

# 没有具体要求

pass

"""

题目091&#xff1a;时间函数举例1。

题目092&#xff1a;时间函数举例2。

题目093&#xff1a;时间函数举例3。

题目095&#xff1a;字符串日期转换为易读的日期格式。

"""

def tm091(): #tm092、tm093、tm095

# 参看tm016

pass

"""

题目094&#xff1a;时间函数举例4,一个猜数游戏&#xff0c;判断一个人反应快慢。

"""

def tm094():

import time,random

print("《猜大小0-1000之间》")

x &#61; random.randint(0,1000)

flag &#61; input("是否开始(y/n)&#xff1a;")

if flag&#61;&#61;"y":

s &#61; time.time()

while 1:

m &#61; int(input("请输入数字&#xff1a;"))

if m>x:

print("大了")

elif m

print("小了")

else:

print("bingo!")

break

e &#61; time.time()

print("耗时%.2f秒"%(e-s))

print(time.sleep(5))

"""

题目096&#xff1a;计算字符串中子串出现的次数。

"""

def tm096():

"""

【个人备注】&#xff1a;用count就行了

"""

x &#61; "ababaabbaaa"

print(x.count("ab"))

"""

题目097&#xff1a;从键盘输入一些字符&#xff0c;逐个把它们写到磁盘文件上&#xff0c;直到输入一个 # 为止。

"""

def tm097():

"""

【个人备注】&#xff1a;保存文件的方法&#xff0c;记住即可。

with .. as ..打开会自动关闭。

其他方式打开&#xff0c;别忘了通过代码关闭。

"""

path &#61; "d:/test.txt"

with open(path,"w&#43;") as f:f.write("")

while 1:

c &#61; input()

if c&#61;&#61;"#":

break

else:

with open(path,"a&#43;") as f:f.write(c)

"""

题目098&#xff1a;从键盘输入一个字符串&#xff0c;将小写字母全部转换成大写字母&#xff0c;然后输出到一个磁盘文件"test"中保存。

"""

def tm098():

"""

【个人备注】&#xff1a;字符串大写

"""

c &#61; input()

c &#61; c.upper()

with open("d:/test.txt","w&#43;") as f:f.write(c)

"""

题目099&#xff1a;有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。

"""

def tm099():

"""

【个人备注】&#xff1a;读写文件

"""

with open("d:/a.txt","r&#43;") as f:a&#61;f.read()

with open("d:/b.txt","r&#43;") as f:b&#61;f.read()

with open("d:/c.txt","w&#43;") as f:f.write(a&#43;b)

"""

题目100&#xff1a;列表转换为字典。

"""

def tm100():

"""

【个人备注】&#xff1a;终于最后一题完事~&#xff0c;没啥说的。

"""

l &#61; ["ak17","b51","b52","#64"]

d &#61; {}

for i in range(len(l)):

d[i]&#61;l[i]

print(d)

# 得到&#xff1a;{0: "ak17", 1: "b51", 2: "b52", 3: "#64"}

def tm100_1():

# 用zip函数更简单

l &#61; ["ak17","b51","b52","#64"]

print(dict(zip(range(4),l)))

# 得到&#xff1a;{0: "ak17", 1: "b51", 2: "b52", 3: "#64"}



推荐阅读
  • 本文介绍了一种简化版的在线购物车系统,重点探讨了用户登录和购物流程的设计与实现。该系统通过优化界面交互和后端逻辑,提升了用户体验和操作便捷性。具体实现了用户注册、登录验证、商品浏览、加入购物车以及订单提交等功能,旨在为用户提供高效、流畅的购物体验。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • jQuery Flot 数据可视化插件:高效绘制图表的专业工具
    jQuery Flot 是一款高效的数据可视化插件,专为绘制各种图表而设计。该工具支持丰富的图表类型和自定义选项,适用于多种应用场景。用户可以通过其官方网站获取示例代码和下载资源,以便快速上手和使用。 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • Go语言中的高效排序与搜索算法解析
    在探讨Go语言中高效的排序与搜索算法时,本文深入分析了Go语言提供的内置排序功能及其优化策略。通过实例代码,详细讲解了如何利用Go语言的标准库实现快速、高效的排序和搜索操作,为开发者提供了实用的编程指导。 ... [详细]
  • 如何在Spark数据排序过程中有效避免内存溢出(OOM)问题
    本文深入探讨了在使用Spark进行数据排序时如何有效预防内存溢出(OOM)问题。通过具体的代码示例,详细阐述了优化策略和技术手段,为读者在实际工作中遇到类似问题提供了宝贵的参考和指导。 ... [详细]
  • 为了在Fragment中直接调用Activity的方法,可以通过定义一个接口并让Activity实现该接口来实现。具体步骤包括:首先在Fragment中声明一个接口,并在Activity中实现该接口。接着,在Fragment中通过类型转换检查Activity是否实现了该接口,如果实现了则调用相应的方法。这种方法不仅提高了代码的解耦性,还增强了模块间的通信效率。此外,还可以通过ViewModel或LiveData等现代Android架构组件进一步优化这一过程,以实现更加高效和可靠的通信机制。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • 如何在Python中将一维数组转换为二维数组:数组操作技巧与示例
    在进行数组操作时,有时需要将一维数组转换为二维数组。本文介绍了这一转换的基本方法和技巧。通过等长分割一维数组,并将其逐行添加到新的二维数组中,可以实现这一目标。此外,文章还提供了具体的代码示例,帮助读者更好地理解和应用这些技巧。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 特斯拉的盈利之谜:净利润未必源自汽车销售
    近日,特斯拉因客户投诉再度成为舆论焦点。一位车主反映其购买仅6天的Model 3在使用官方超级充电桩时突然断电,引发了对特斯拉产品质量和售后服务的质疑。然而,特斯拉的盈利模式并不仅限于汽车销售,其净利润可能更多地来自其他业务板块,如能源服务、自动驾驶技术和软件订阅等。这些多元化收入来源为特斯拉的财务表现提供了更多支撑。 ... [详细]
author-avatar
惜泽2502852447
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有