1.26个字母大小写成对打印,例如:Aa,Bb......
方法1:
for i in range(26):
print(chr(65+i)+chr(97+i))
方法2:
for i in range(26):
print(chr(ord("A")+i),chr(ord("a")+i))
2.一个list包含10个数字,然后生成一个新的list,要求新的list里面的数都比之前的数多1
s = list(range(10))
list = []
for i in s:
list.append(i+1)
print(list)
3.倒序取出每个单词的第一个字母,例如:I am a good boy!
方法1:
s = "I am a good boy!"
s = s.split()
s.reverse()
result = []
for i in s:
result.append(i[0])
print(result)
方法2:
a = "I AM A BOY"
result = []
for i in a.split()[::-1]:
result.append(i[0])
print(result)
4.输入一个自己的生日月份,用if和else判断一下当月是不是你的生日月
import time
month = input("send a month: ")
current_time = time.strftime('%Y-%m-%d',time.localtime(time.time()))
#print(type(current_time.split("-")[1]))
#print(current_time.split("-")[1])
if abs(int(current_time.split("-")[1])) == int(month):
print("This month is mybirthday!")
else:
print("This month is not mybirthday!")
5.输入3个字母:e、a、r,如果输入e,那么退出循环,如果输入a,执行continue,如果输入r,那么再读取一次字母,并打印,用死循环实现。
while 1:
letter = input("send a letter:")
if letter == 'r':
letter = input("send a letter:")
elif letter == 'e':
break
elif letter == 'a':
continue
6.输入3个字母:e、a、r,如果输入e,那么退出循环,如果输入a,执行continue,如果输入r,那么再读取一次字母,并打印,只允许输入三次字母,重复输入的字母不算在内。
count = 0
for i in range(3):
letter = input("send a letter%d:"%i)
if letter == 'e':
break
elif letter == 'a':
continue
elif letter == 'r':
count += 1
if count == 2:
input("send a letter dddd:")
P.S感觉这道题目可能有问题,哈哈。。。
7.把一个字符串"abcdefg"插入到一个list中,每个字母占一个list中的元素位置,例如:["a","b",
"c","d","e","f","g"]
s = "abcdefg"
lists = []
for i in s:
lists.append(i)
print(lists)
#反思
a = ["a","b","c","d","e","f","g"]
print("".join(a))
8.['a','b','c','d','e','f','g']操作这个list,拼出一个字符串"adg"
s = ['a','b','c','d','e','f','g']
print("".join(s[::3]))
9.做一个小图书馆程序,图书馆的书放到一个list里保存,使用add命令:添加一本书,使用lend命令:减去一本书,如果不存在,要提示一下,使用getall命令:可以查询所有没有借出去的书,然后退出程序。
library = []
while 1:
command = input("your command and book name is: ")
command = command.strip()
if "add" in command:
library.append(command.split(" ")[1])
print("add book complete!")
elif "lend" in command:
if command.split(" ")[1] in library:
library.remove(command.split(" ")[1])
print("lend book complete!")
else:
print("The book your lend doesn't exist!")
continue
elif "getall" in command:
if len(library) >= 1:
for book in library:
print(book)
else:
print("No book in the library!")
elif "." == command:
print("Wrong!")
else:
print("Bye!")
break
10.写一个函数,统计一下一句话中的数字个数。例如:I am a 19 years old boy!666!
a = "I am a 19 years old boy!666!"
def total_num(s):
if not isinstance(s,str):
print("is not str!")
return 0
result = 0
for i in s:
if i in "1234567890":
result += 1
return result
print(total_num(a))
P.S: 数字也可以用string.digits表示,但是要import string
11.写一个函数,使用可变参数*arg,计算函数所有参数之和。
def sum(*arg):
sum = 0
for i in arg:
sum += i
return sum
print(sum(1,5,7,8,8))
12.写一个函数,使用可变参数**kw,输出的key、value。
def key_value(**kw):
for k,v in kw.items():
print(k,":",v)
print(key_value(a=2,b=3,c=5))
13.使用**kw,把可变的所有参数算一个乘积。
def key_value(**kw):
sum = 1
for v in kw.values():
sum *= v
print(sum)
key_value(a=4,b=5,c=5)
14.同时使用*arg和**kw,算一下字母的长度之和,注意所有参与数均使用字符串,字符串都是字母。
def total(*arg,**kw):
sum = ""
for i in arg:
sum += i
for i in kw.values():
sum += i
print(len(sum))
total("a","b","c",b="a",d="c")
15.统计一下一共出现了多少个单词,每个英文单词出现的次数。例如:I am a boy.I am a good man.
s = "I am a boy.I am a good man."
s = s.replace("."," ")
s = s.split(" ")
s = s[:-1]
num = {}
for i in s:
count = s.count(i)
num[i] = count
print(num)
16.判断1-127阿斯克码里都是什么字符。
while 1:
number = input("send a num: ")
number = int(number)
if number >=1 and num <= 127:
ascii = chr(number)
print(ascii)
else:
print("Not in 1-127!")
break
17.输入a、b、c、d,四个整数,计算a+b-c*d的结果。
while 1:
a = input("send a is: ")
b = input("send b is: ")
c = input("send c is: ")
d = input("send d is: ")
if a and b and c and d:
int_a = int(a)
int_b = int(b)
int_c = int(c)
int_d = int(d)
result = int_a+int_b-int_c*int_d
print(result)
else:
print("Bye!")
break
18.3个人在餐厅吃饭,想分摊饭费。总共花费35.27美元,他们还想给15%的小费,每个人该怎么付钱。
per_fee = round((35.27+35.27*0.15)/3.2)
19.初始化一个车里有多少升油,调用run方法,实现车的运行,没有的时候提示:需要加油。跑一次里程数需要加100公里,汽油减少20.调用add_gas方法可以实现加油,让车继续运行,check_distance方法查看车跑的里程数。
class car():
def __init__(self,gas_volume,gas_valume_num,distance):
self.gas_volume = gas_volume
self.gas_valume_num = gas_valume_num
self.distance = distance
def run(self):
if self.gas_volume > = self.gas_valume_num:
self.distance += 100
self.gas_volume -= 20
else:
print("need to add gas!")
def add_gas(self,n):
self.gas_volume += n
def check_distance(self):
return self.distance
def check_gas(self):
return self.gas_volume
c = car(100,20,0)
for i in range(3):
c.run()
print("check gas is :",c.check_gas())
print("check distance is :",c.check_distance())
c.add_gas(100)
print("check gas is :",c.check_gas())
20.统计一下,当前目录下的文件数量总和。
import os
file_count = 0
dir_count = 0
for i in os.listdir("e:\"):
if os.path.isdir(i):
dir_count += 1
else:
file_count += 1
print(file_count)
print(dir_count)
21.程序建立一个10级的目录pic1到pic10。
import os
os.makedirs("e:\pic")
os.chdir("e:\pic")
for i in range(1,11):
os.mkdir("pic"+str(i))
os.chdir("pic"+str(i))
22.写一个函数,统计一下字母个数。例如:I am a 19 years old boy!666!
s = "I am a 19 years old boy!666!"
def letter_nums(s):
list = []
for i in s:
if i >= chr(65) and i <= chr(90) or i >= chr(97) and i <= chr(122):
list.append(i)
print(len(list))
letter_nums(s)
23.写一个函数,统计一下字母和数字个数。例如:I am a 19 years old boy!666!
s = "I am a 19 years old boy!666!"
def letter_nums(s):
dict = {}
count = 0
for i in s:
if i >= chr(65) and i <= chr(90) or i >= chr(97) and i <= chr(122):
dict[i] = s.count(i)
elif i >= chr(48) and i <= chr(57):
dict[i] = s.count(i)
print(dict)
letter_nums(s)
24.写一个函数,统计一下非字母和非数字个数。例如:I am a 19 years old boy!666!
s = "I am a 19 years old boy!666!"
import string
def letter_nums(s):
list = []
for i in s:
if i not in string.ascii_letters and i not in string.digits:
list.append(i)
print(len(list))
print(list)
letter_nums(s)
25.随机生成10位密码,包含数字和字母
方法1:
import random
import string
password = ""
mi = string.ascii_letters+string.digits
for i in range(10):
password += random.choice(mi)
print(password)
方法2:
import random
import string
password = []
mi = string.ascii_letters+string.digits
for i in range(10):
password += mi[random.randint(1,len(mi))]
print("".join(password))
方法3:
import random
import string
password = []
for i in range(10):
if random.randint(0,1):
letter = random.choice(string.ascii_letters)
else:
letter = random.choice(string.digits)
password.append(letter)
print("".join(password))
方法4:(三目运算)
import string
import random
"".join([random.choice(string.ascii_letters) if random.randint(0,1) else random.choice(string.digits) for i in range(10)])
26.一个数可以被2和5整除就打印。
import random
while 1:
num = random.randint(1,100)
if num % 2 == 0 and num % 5 == 0:
print("this num is %d!"%num)
break
else:
continue
27.[1,2,3,4]用for循环求和。
方法1:
s = [1,2,3,4]
sum = 0
for i in range(len(s)):
sum += s[i]
print(sum)
方法2:
sum = 0
for i in [1,2,3,4]:
sum += i
print(sum)
28.[1,2,3,4,5,6,7]输入一个数字,判断是否在list中,执行3此这个逻辑。
for i in range(3):
num = input("send a num: ")
if int(num) in [1,2,3,4,5,6,7]:
print("%s in the list!"%int(num))
else:
print("%s not in the list!"%int(num))
29.输入一个数,判断是奇数还是偶数,当输入的数字是100时结束。
while 1:
num = input("send a num: ")
if int(num) == 100:
break
elif int(num) %2 == 0:
print("this %d is oushu!"%int(num))
else:
print("this %d is jishu!"%int(num))
30.随机生成10个小写字母
方法1:
import random
import string
list = []
for i in range(10):
letter = random.choice(string.ascii_lowercase)
list.append(letter)
print("".join(list))
方法2:
import random
list = ""
for i in range(10):
letter = random.randint(ord("a"),ord("z"))
list += chr(letter)
print(list,end ="")
方法3:
import random
list = []
for i in range(10):
letter = random.randint(ord("a"),ord("z"))
list.append(chr(letter))
print("".join(list))
31.随机生成10个大写字母
方法1:
import random
import string
list = []
for i in range(10):
letter = random.choice(string.ascii_uppercase)
list.append(letter)
print("".join(list))
方法2:
import random
list = ""
for i in range(10):
letter = random.randint(ord("A"),ord("Z"))
list += chr(letter)
print(list,end ="")
方法3:
import random
list = []
for i in range(10):
letter = random.randint(ord("A"),ord("Z"))
list.append(chr(letter))
print("".join(list))
32.随机生成5个小写,5个大写字母
方法1:
import random
import string
list = []
for i in range(5):
letter = random.choice(string.ascii_uppercase)
list.append(letter)
for i in range(5):
letter = random.choice(string.ascii_lowercase)
list.append(letter)
print("".join(list))
方法2:
import random
list = []
for i in range(5):
letter = random.randint(ord("A"),ord("Z"))
list.append(chr(letter))
for i in range(5):
letter = random.randint(ord("a"),ord("z"))
list.append(chr(letter))
print("".join(list))
33.生成随机不限定大小写个数的10个字母
方法1:
import random
import string
list = []
for i in range(10):
letter = random.choice(string.ascii_letters)
list.append(letter)
print("".join(list))
方法2:
import random
list = ""
lower_letter_num = random.randint(1,9)
upper_letter_num = 10-lower_letter_num
for i in range(lower_letter_num):
list += chr(ord("a")+random.randint(1,25))
for i in range(upper_letter_num):
list += chr(ord("A")+random.randint(1,25))
print(list)
方法3:
import random
import string
"".join([random.choice(list(string.ascii_letters)) for i in range(10)])
方法4:
import random
result = ""
for i in range(5):
result += chr(ord("a")+random.randint(1,25))+chr(ord("A")+random.randint(1,25))
print(result)
34.写一个程序,找到id不一样的那个数,从1开始遍历后面的数,找到第一个不一样的数
方法1:
num = 1
for i in range(1,1000):
if id(i) == id(num):
num += 1
else:
print(i)
break
方法2:
num = 1
for i in range(1,1000):
if id(i) != id(num)"
print(i)
break
num += 1
35.s= "gssdgsfbooksdfsdfs" 取出“book”
s[7:11]
36.求全部元素的和[1,2,1,2,3,3,3,3]
s = [1,2,1,2,3,3,3,3]
sum = 0
for i in s:
sum += i
print(sum)
37.求全部偶数的和[1,2,1,2,3,3,3,3]
s = [1,2,1,2,3,3,3,3]
sum = 0
for i in s[::2]:
sum += i
print(sum)
38.统计个数字出现的个数[1,2,1,2,3,3,3,3]
s = [1,2,1,2,3,3,3,3]
num = {}
for i in s:
num[i] = s.count(i)
print(num)
39.算出一个bc字母的ascii码之和
print(ord("b")+ord("c"))
40.算出a-z字母的ascii码之和
sum = 0
for i in range(ord("a"),ord("z")+1):
sum += i
print(sum)
41.算出a的后面2,4,6,8,10之后的字母是什么
方法1:
for i in range(ord("a")+2,ord("a")+11,2):
print(chr(i))
方法2:
for i in range(2,12,2):
print(chr(ord("a")+i))
42.把a-z逆序输出
str = ""
for i in range(ord("a"),ord("z")+1):
str += chr(i)
print(str[::-1])
43.判断一个年是否是闰年(能被4整出并且不能被100整除,或者可以被400整除)
while 1:
year = input("send a year: ")
if int(year) % 4 == 0 and int(year) % 100 != 0 or int(year) % 400 ==0:
print("this year %d is runnian"%int(year))
else:
print("this year %d is not runnian"%int(year))
break
44.输出1000以内的能被2,3,5同时整除的数
for i in range(1,1001):
if i % 2 == 0 and i % 3 == 0 and i % 5 == 0:
print(i)
45.输出1000以内能被2,3,5任意一个整除的数,每10个数为一行
count = 0
for i in range(1,1001):
if i % 2 == 0 or i % 3 == 0 or i % 5 == 0:
print(i,end = " ")
count += 1
if count % 10 == 0:
print()
备注:end = " "是不换行
46.找出列表中最大的值 a = [2,3,56,6,8,7]
a = [2,4,5,6,6,7]
max = a[0]
for i in a:
if i > max:
max = i
print(max)
47.找出最大的2个数a = [2,3,56,6,8,5,7,66]
a = [2,3,56,6,8,5,7,66]
max = a[0]
max_l = a[1]
for i in a:
if i > max:
max = i
for j in a[1:]:
if j != max and j > max_l:
max_l = j
print(max,max_l)
48.二进制1010,算出他的十进制数 (如:1*2^3+0*2^2+1*2^1+0*2^0)
a = "1010"
sum = 0
for i in range(len(a)):
print(i)
sum += int(a[i])*2**(len(a)-1-i)
print(sum)
49.a=10,10一直除2,一直到商为0为止,输出商。
a = 10
while a != 0:
a = a//2
print(a)
50.猜拳,输出一个数,比大小,猜对退出
import random
while 1:
num = input("send a num: ")
if int(num) > random.randint(1,3):
print("it is big!")
elif int(num) < random.randint(1,3):
print("it is small!")
elif int(num) == random.randint(1,3):
print("you win!")
break
51.随机生成一个数,如果是3就退出
方法1:
import random
while 1:
num = random.randint(1,10)
print(num)
if num == 3:
print("wow 333")
break
方法2:
import random
a = 1
while a != 3:
a = random.randint(1,10)
print(a)
52.统计字符串里有几个数字 s = "1b3m5m6m7m77k8"
方法1:
s = "1b3m5m6m7m77k8"
num = 0
for i in s:
if i in "0123456789":
num += 1
print(num)
方法2:
import string
s = "1b3m5m6m7m77k8"
num = 0
for i in s:
if i in string.digits:
num += 1
print(num)
方法3:
import string
s = "1b3m5m6m7m77k8"
num = 0
for i in s:
if i not in string.ascii_letters:
num += 1
print(num)
53.把add(1,2,3,4,5)函数中所有的值求和并返回。用*c ,**f
方法1:*c
def add(a,b*c):
sum = 0
for i in c:
sum += i
return sum+a+b
方法2:**f
def add(a,b,**f):
sum = 0
for i in f.values():
sum += i
return a+b+sum
54."llllllllllooove"里有多少个l
a = "llllllllllooove"
count = a.count("l")
print(count)
55.“i am a boy. i am a girl" 把空格和 去掉
方法1:
a = "i am a boy. i am a girl"
a = a.split()
print("".join(a))
方法2:
a = "i am a boy. i am a girl"
new = ""
for i in a:
if a != " " or a != " ":
new += i
print(new)
56.“i am a boy"不包含a的单词有哪些
a = "i am a boy"
w = []
for i in a.split():
if "a" not in i:
w.append(i)
print(w)
57.“i am a boy"偶数位置字母后加*
分析1:
>>> s = "i am a boy"
>>> ss = []
>>> for i in s:
... ss.append(i)
...
>>> ss
['i', ' ', 'a', 'm', ' ', 'a', ' ', 'b', 'o', 'y']
分析2:
>>> s = "i am a boy"
>>> bb = ""
>>> for i in range(len(s)):
... if i % 2 == 0:
... bb += s[i]+"*"
...
>>> bb
'i*a* * *o*'
解题:
s = "i am a boy"
ss = ""
for i in range(len(s)):
if i % 2 == 0:
if (s[i] >= "a" and s[i] <= "z") or (s[i] >= "A" and s[i] <= "Z"):
ss += s[i]+"*"
print(ss)
58."abdfgh"第一个字母和最后一个字母拼接
a = "abdfgh"
print(a[:1:1]+a[:-2:-1])
print(a[:1]+a[-1])
print(a[0]+a[-1])
print(a[::5])
59."abdfgh"取偶数位字母
a = "abdfgh"
print(a[::2])
60.使用两种方式求2-20之间,偶数的和。一种用for ,一种用while
方法1:
sum = 0
for i in range(2,21,2):
sum += i
print(sum)
方法2:
i = 2
sum = 0
while i <= 20:
sum += i
i += 2
print(sum)
61.输入100个数,从1-100,要求使用2层循环,再求个和
方法1:
sum = 0
for i in range(10):
for j in range(1,11):
sum += i*10+j
print(sum)
方法2:
sum(list(range(1,101)))
62.生成一个9位随机密码,包含数字、大写字母和小写字母各3个,且数字、大写和小写均随机分布。
u = [random.choice(string.ascii_uppercase) for i in range(3)]
l = [random.choice(string.ascii_lowercase) for i in range(3)]
d = [random.choice(string.digits) for i in range(3)]
result = u+l+d
random.shuffle(result)
"".join(result)
备注:random.shuffle原地排序,被排序的列表的发生了变化,但不能返回一个新列表,返回值为None
63.1-10倒序输出
i = 10
while i >=1:
print(i)
i -= 1
64.遍历[1,2,3,(4,5,6)]
for i in s:
if isinstance(i,tuple):
for j in i:
print(j)
else:
print(i)
65.在0-10中,使用continue语句来实现打印1,3,5,7,9
for i in range(1,10):
if i % 2 == 0:
continue
print(i)
备注:不用else也可以
66.嵌套循环输出10-50中各位带1-5的所有数字
for i in range(1,5):
for j in range(1,11):
a = i*10+j
if j >=1 and j <= 5:
print(a)
67.写一个判断素数的函数
def is_prime(a):
for i in range(2,a):
if a % i == 0:
return False
break
else:
return True
68.实现一个add函数,只允许输入2个数字相加,否则返回None
def add(a,b):
if isinstance(a,(int,float,complex)) and isinstance(b,(int,float,complex)):
return a+b
return None
69.写一个函数:用户可以输入n次数据,可能是数字,也可能是字符串,请将用户输入的所有数字类型进行累加求和,当用户输入bye的时候,结束函数的执行并且返回求和的结果。
def add():
result = None
while 1:
user_input = input("send a your data:")
if user_input == "bye":
return result
try:
float(user_input)
if result is None:
result = 0
result += float(user_input)
except:
pass
add()
70.计算2,1000000中所有的素数,并计算耗时。
质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数)。
import time
def is_prime(a):
for i in range(2,a):
if a % i == 0:
return False
break
else:
return True
result = []
s = time.time()
for i in range(2,1000001):
if is_prime(i):
result.append(i)
e = time.time()
print(len(result))
print(e-s)
71.计算圆的面积
def area(r):
return round(math.pi*r*r,2)
72.算文件的行数
方法1:
fp=open(r"C:Users11067Desktopdd.txt","r",encoding="utf-8")
len(fp.readlines())
fp.close()
方法2:
fp = open(r"C:Users11067Desktopdd.txt","r",encoding="utf-8")
fp.seek(0,0)
count = 0
for i in fp:
count += 1
print(count)
fp.close()
方法3:
fp = open(r"C:Users11067Desktopdd.txt","r",encoding="utf-8")
fp.seek(0,0)
count = 0
while fp.readline():
count += 1
print(count)
fp.readline() #读到结尾是‘’,即为false,所以是自动退出。
fp.close()
73.打印1-100,用2层循环
方法1:
for i in range(10):
for j in range(1,11):
print(i*10+j,end=" ")
print()
方法2:
num = 1
for i in range(10):
for j in range(10):
print(num,end=" ")
num += 1
print()
74.打印1-100,用2层循环,求和
result = 0
for i in range(10):
for j in range(1,11):
result += i*10+j
print(result)
75.写一个函数,统计一下一句话中的大写英文个数、小写英文个数和数字个数。如:I am a 18 years old boy!Do u believe,do you?
s = "I am a 18 years old boy!Do u believe,do you?"
import string
upper = 0
letter = 0
digit = 0
for i in s:
if i in string.ascii_lowercase:
letter += 1
if i in string.ascii_uppercase:
upper += 1
if i in string.digits:
digit += 1
print(letter,upper,digit)
76.1,1,2,3,5,8,13,求第7个是13的函数
def num(num):
num1 = 0
num2= 1
sum = 0
for i in range(num):
sum = num1+num2
num2 = num1
num1 = sum
#print(num1,num2)
print(sum)
77.写一个求平均值的函数,参数必须为列表或者元组,里面包含的元素可能不是数字
方法1:
def average(a):
if not isinstance(a,(list,tuple)):
return None
sum = 0
num = 0
for i in a:
if isinstance(i,(int,float)):
num += 1
sum += i
if num == 0:
return None
return sum/num
方法2:
def average(a):
if not isinstance(a,(list,tuple)):
return None
sum = 0
for i in a:
if isinstance(i,(int,float)):
sum += i
if len(a) == 0:
return None
return sum/len(a)
78.写一个函数:统计一句话的单词个数,找到长度最长的字母个数。函数计算结果返回2个值,一个是单词个数,一个是最长的字母个数。
def count_num(sentence):
if not isinstance(sentence,str):
return None
word_num = len(sentence.split())#单词个数
word_max_length=0
for i in sentence.split(): #循环单词列表
if len(i) > word_max_length:
word_max_length = len(i) #假如某个单词大于最大单词长度,就把他赋值给他
return word_num,word_max_length
79.写一个函数,有2个参数,一个是列表,一个待删除的元素。函数实现在列表中删除所有的待删除元素,然后把删除后的列表剩余元素返回。
def delElm(list_elm,del_elm):
if not isinstance(list_elm,list):
return None
for i in list_elm:
if not isinstance(del_elm,int):
return None
if i == del_elm:
list_elm.remove(i)
return list_elm
80.单词中去掉所有的a
def removeA(word):
if not isinstance(word,str):
return None
new_word = list(word)
for letter in new_word:
if letter == "a":
new_word.remove("a")
return "".join(new_word)
81.统计一个目录下(一层目录),统计一下有多个文件,统计一下有多少个目录,提示:用os.listdir 和判断文件和路径的api来进行计数
import os
import os.path
file_count = 0
dir_count = 0
for i in os.listdir("E:\test"): #所有文件和文件夹的列表
if os.path.isfile("E:\test\"+i): #判断test里的文件或者文件夹到底是不是文件
file_count += 1
else:
dir_count += 1
print("file_count:%s"%file_count)
print("dir_count:%s"%dir_count)
Tips:
>>> os.listdir("E:\test") #输出的是个列表
['a.txt', 'b.txt', 'test1', 'test2']
82.创建一个10级目录,每个目录的名字从gloryroad1-10,每个目录创建一个文件,文件的名字是1-10.txt,文件内容写上文件名
import os
def creat10dir(dir_path,num):
os.chdir(dir_path)
for i in range(int(num)):
os.mkdir("gloryroad1"+str(i))
os.chdir("gloryroad1"+str(i))
with open("gloryroad1"+str(i),"w") as fp:
fp.write("gloryroad1"+str(i))
fp.close()
83.统计一个英文句子中包含2个a的单词有几个,并将两个a替换为星号,不能用count函数
count函数:
def count(word,letter):
if (not isinstance(word,str)) or (not isinstance(letter,str)):
return None
num = 0#字母的数量
i = 0 #循环的计数
while i <= len(word)-1:
if word[i:i+len(letter)] == letter:
num += 1
i += len(letter)
else:
i += 1
return num
方法1:
s = "I am a abandon aaaa boy aabbaa aacc!"
word_list = s.split()
result_num=0
new_sentence="" #新句子
for word in word_list:
if count(word,"a")==2:
result_num+=1
new_word = "" #替换*后的单词
for i in word:
if i!="a":
new_word+=i #不等"a"就把字母加进去
else:
new_word+="*" #等"a"就把字母"a"换成*
new_sentence+=new_word+" " #"a"个数等于2,就把新单词加入新句子
else:
new_sentence+=word+" " #否则直接把单词加入新句子
new_sentence[:-1]
result_num
方法2:
s = "I am a abandon,aaaa boy aabbaa aacc!"
s=list(s)
new_s=[]
for i in s:#过滤标点,只保留空格和大小写字母
if i ==" " or ((i >="a" and i<="z") or
(i >="A" and i<="Z")):
new_s.append(i)
else:
new_s.append(" ")
s="".join(new_s)
result_num=0
word_list = s.split() #取出来单词列表
for i in range(len(word_list)): #遍历单词列表
if word_list[i].count('a')==2:
result_num+=1
word_list[i]=word_list[i].replace("a","*")#替换的词重新赋值
print("包含a的单词一共:%s 个" %result_num)
print(" ".join(word_list))
84.统计一个2维列表的所有元素之和
def sum2list(list2):
result = 0
for i in list2[0]:
result += i
for j in list2[1]:
result += j
return result
a=[[1,2,3], [4,5,6]]
sum2list(a)
85.统计一句话中仅出现一次的字母
def letter1(sentence):
ss = list(sentence)
letter = []
for i in ss:
if ss.count(i) == 1:
letter.append(i)
return letter
86.把字母都变成大写,s = "I am a boy!"
s = "I am a boy!"
s.upper()
Tips:
str.upper() # 把所有字符中的小写字母转换成大写字母
str.lower() # 把所有字符中的大写字母转换成小写字母
str.capitalize() # 把第一个字母转化为大写字母,其余小写
str.title() # 把每个单词的第一个字母转化为大写,其余小写
87.
1 2 3
4 5 6
7 8 9
上面转换成下面
1 4 7
2 5 8
3 6 9
[[j[i] for j in a] for i in range(3)]
解释:
i=0--->j[0]=[1,4,7]
i=1--->j[0]=[2,5,8]
i=2--->j[0]=[3,6,9]
88.删除2维列表的第2列,a = [[1,2,3],[4,5,6],[7,8,9],[11,12,13]]
a = [[1,2,3],[4,5,6],[7,8,9],[11,12,13]]
[[i[j] for j in [0,2]] for i in a]
解释:
i[0]-->1,4,7,11
i[2]-->3,6,9,13
89.序号为偶数的,字母后加*
s="sdfsdf"
ss = list(s)
b=[]
for i in range(len(ss)):
if i % 2 == 0:
b.insert(i+1,ss[i]+"*")
else:
b.append(s[i])
"".join(b)
90.图书馆系统(registerlogin) 20190126
91.只要奇数坐标的字符串“abcdef”
s="abcdef"
for i in s[1::2]:
print(i)
92.把偶数位置的字母均替换为*,"a1v23333de"
s= "a1v23333de"
ss=list(s)
for i in range(len(ss)):
if i % 2 == 0:
if (ss[i]>="a" and ss[i]<="z") or (ss[i]>="A" and ss[i]<="Z") :
ss[i] = "*"
"".join(ss)
93.生成随机的字母和数字,需要类似的格式:字母数字字母数字。。。,生成长度为10的字符串
方法1:
import string
impirt random
def ss():
for i in range(5):
print(random.choice(string.ascii_letters)+random.choice(string.digits),end="")
print()
方法2:
import string
impirt random
def ss():
result = ""
for i in range(5):
result += string.ascii_letters[random.randint(0,52)]+string.digits[random.randint(0,9)]
return result
方法3:
import string
import random
def ss():
result = ""
for i in range(10):
if i % 2==0:
result += string.ascii_letters[random.randint(0,52)]
else:
result += string.digits[random.randint(0,9)]
return result
94.生成随机的字母和数字,需要类似格式:用函数实现且生成的字符串长度,可以通过函数参数来指定
方法1:
import string
import random
def ss(num):
result = ""
for i in range(num):
result += string.ascii_letters[random.randint(0,52)]+string.digits[random.randint(0,9)]
return result
方法2:
import random
def ss(length,a,b):
if not (isinstance(length,int) and (isinstance(a,int) and isinstance(b,int)) and length>0 and a>=97 and a<=122):
return "请输入字母在97到122之间!"
result = ""
for i in range(length):
if i % 2 == 0:
result += chr(random.randint(a,b))
else:
result += str(random.randint(0,9))
return result
95.统计一句话的单词数量,例如:I am a 18 years old boy!Do u believe,do you?
s="I am a 18 years old boy!Do u believe,do you?"
s = list(s)
for i in range(len(s)):
if not ((s[i]>="a" and s[i]<="z") or (s[i]>="A" and s[i]<="Z")):
s[i] =" "
len("".join(s).split())
96.单词逆序输出,"I am a 18 years old boy!Do u believe,do you?"
s="I am a 18 years old boy!Do u believe,do you?"
s = list(s)
for i in range(len(s)):
if not ((s[i]>="a" and s[i]<="z") or (s[i]>="A" and s[i]<="Z")):
s[i] =" "
" ".join("".join(s).split()[::-1])
97.练习找到句子中第二长的所有单词!
s="you do believe u Do CCboy old years a am I"
word_list=s.split()
max_length=0
sec_max_length=0
for word in word_list:
if len(word) > max_length:
max_length = len(word)
elif len(word)<max_length and len(word)>sec_max_length:
sec_max_length = len(word)
print(sec_max_length)
for word in word_list:
if len(word)==sec_max_length:
print(word)
98.将一个字符串中的所有重复字符去掉,只保留重复出现字符的最后一个
def a(s):
s=list(s)
result=[]
for i in range(len(s)):
if s[i] in s[i+1:]:
continue
else:
result.append(s[i])
return "".join(result)
99.将一个字典中的所有内容存到一个列表中,且格式为一个key一个value
def a(a):
result=[]
for k,v in a.items():
result.append(k)
result.append(v)
return result
a({1:"a",2:"b",3:"c"})
100.把一个文件中包含数字的所有行,筛选存到一个新文件中
fp1 = open("e:\a.txt","r")
fp2 = open("e:\result.txt","w")
for i in fp1:
for j in i:
if j in "1234567890":
fp2.write(i)
break
fp1.close()
fp2.close()
101.把一个文件的所有行倒序输出
fp1 = open("e:\a.txt","r")
fp2 = open("e:\result.txt","w")
for i in fp1.readlines()[::-1]:
if "
" in i:
fp2.write(i)
else:
fp2.write(i+"
")
fp1.close()
fp2.close()
102.把一个文件下所有的文件删除,在所有的目录下,新建一个文件a.txt,里面随便写个关键字
import os
for i in os.listdir():
if os.path.isfile(i):
os.remove(i)
else:
os.chir(i)
with open("a.txt","w") as pf:
pf.write("i love u")
os.chdir("..") #退出当前文件夹
103.统计每个文件一共有多少行,有多少空行,多少注释行,多少代码行。
import os
import os.path
def count_lines(fp): # 输入句柄判断行数
line_number = 0 #总行数
blank_line_number = 0 #空白行数
code_line_number = 0 # 代码行数
comment_number = 0 #注释行数
try:
for line in fp:
line_number += 1
if line.strip() == "":
blank_line_number += 1
elif line.strip().startswith("#"):
comment_number += 1
else:
code_line_number += 1
return line_number,blank_line_number,code_line_number,comment_number
except:
print("统计文件%s代码时候出错" %fp.name)
def count_code_line(file_path):
if not os.path.exists(file_path):
print("文件的路径不存在,请重新输入!")
return None
try:
fp = open(file_path,"r",encoding="gbk")
return count_lines(fp)
except:
fp = open(file_path,"r",encoding="utf-8")
return count_lines(fp)
104.统计一下多级目录个数,统计一下多级目录下所有的文件个数,统计一个多级目录下的python文件个数
dir_num = 0 #文件夹个数
file_num =0 #文件个数
py_file_num = 0 #py文件个数
for root,dirs,files in os.walk("e:\test"): #os.walk多级目录统计
for dir in dirs:
dir_num +=1
for file in files:
file_num +=1
if os.path.splitext(file)[1]==".py": #切割
py_file_num+=1
print("""
总目录个数:%s
总文件个数:%s
py文件个数:%s
""" %(dir_num,file_num,py_file_num))
Tips:
>>> s = "sdfsf.py"
>>> os.path.splitext(file)[1]
'.txt'
105.一个英文句子,统计字母个数,并且按照4a3b0c的格式输出,字母个数在前,字母在个数后面
def count_letter(s):
import string
result = []
for i in string.ascii_lowercase: #小写字母 a--z
result.append(str(s.count(i)))
result.append(i)
return "".join(result)
print(count_letter('adfkjbaadasdkljbs'))
106.判断一个日期是一年中的多少天
def is_leap_year(year): #判断是不是闰年
try:
year = int(year)
if (year % 400 ==0) or (year%4==0 and year%100!=0):
return True
else:
return False
except:
return False
def count_days(): #计算天数
date = input("year-month-day:")
year,month,day = date.split("-")
if int(day) > 31:
return None
elif int(month) == 2:
if int(day) >29:
return None
result = 0
try:
for i in range(1,int(month)): #最后一个月不算在内,算+day
if i not in range(1,13):
return None
elif i in [1,3,5,7,8,10,12]: #1,3,5,7,8,10,12月
result+=31
elif i ==2:
result+=28
if is_leap_year(year):
result+=1 #闰年+1
else:
result+=30 #4,6,9,11月
result+=int(day)
except:
result = 0
return result