zoukankan      html  css  js  c++  java
  • python习题一

    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


    一切技术都是为业务服务,脱离业务的技术一文不值!

  • 相关阅读:
    WSGI 简介
    past.deploy
    python中self和cls
    heat template例子
    cinder-api 启动过程学习
    ubuntu安装cloud-init制作成openstack镜像---cloud-init篇
    sus 11.3如何安装与配置cloud-init
    DHCP工作原理
    交换
    路由器
  • 原文地址:https://www.cnblogs.com/bubutianshu/p/10124214.html
Copyright © 2011-2022 走看看