python基本功
逻辑锻炼
# n个人排成一列,每人手里面有0~n-1个球,如果有两人手中拥有同样数量的球,返回球的数量(如果有多组只需返回任意一组即可),否则返回-1 # 例如:给定lst=[2,4,1,0,5,3,2,3]表示8人手中拥有的球的数量,返回值输出2或者3都是可行的 import random import string from time import sleep def search(lst): n = 1 for i in lst: for j in range(n, len(lst)): if i == lst[j]: print(i) n += 1 lst = [2, 4, 1, 0, 5, 3, 3, 3] search(lst) def search_char(lst): for i in range(len(lst)): char = lst[len(lst) - i-1] for j in range(0, len(lst) - i - 1): if lst[j] == char: print("sss:", char) break search_char(lst)
2,斐波那契数列 0 1 1 2 3 5 7 12 19
# 3,斐波那契数列 0 1 1 2 3 5 7 12 19 def fib(n): if n == 1: print([0]) return if n == 2: print([0, 1]) return a, b = 0, 1 l = [] while a < n: # for i in range(n) l.append(a) a, b = b, a + b print(l) fib(2) def fibo(n): a, b = 0, 1 aws = [] for i in range(n): aws.append(a) a, b = b, a + b return aws print(fibo(2)) # 3 fib def fibb(): a,b = 0,1 while True: a,b = a+b,a yield a for f in fibb(): f_li=[] if f > 10: break print("ssss",f) f_li.append(f)
3,找质数
# 找质数 后面的else是精髓 def demo(m, n): if m < 1 or m > n or n > 1000000: return -1 t = [] for i in range(m, n): for j in range(2, i): if i % j == 0: break else: t.append(i) return t y = demo(3, 10) print(y)
4,找出一个字符串中第一个不重复的字符串,并返回。如”abcacd”,第一个不重复的字符为”b”。请写一个方法实现
# 找出一个字符串中第一个不重复的字符串,并返回。如”abcacd”,第一个不重复的字符为”b”。请写一个方法实现 def search_str(str: str) -> str: dict_str = {} for i in range(len(str)): if str[i] in dict_str: dict_str[str[i]] += 1 else: dict_str[str[i]] = 1 for i in range(len(str)): if dict_str[str[i]] == 1: # return (str[i]) print(str[i]) print(i) break search_str("abcacfd")
5,区分奇偶数,并排序,
# 奇偶两边站 # 1,空间换时间:直接两个新list # 2,双指针, def demo(l: list) -> list: n = len(l) a = 0 b = n - 1 while a < b: if l[a] % 2 == 0 and l[b] % 2 != 0: l[a], l[b] = l[b], l[a] else: if l[a] % 2 != 0: a += 1 if l[b] % 2 == 0: b -= 1 print(l) i = 0 for i in range(n): if l[i] % 2 == 0: print(i) i = i break for h in range(i): for j in range(i - h - 1): if l[j] > l[j + 1]: l[j], l[j + 1] = l[j + 1], l[j] for k in range(n - i): for j in range(i, n - 1): if l[j] > l[j + 1]: l[j], l[j + 1] = l[j + 1], l[j] de = [3, 4, 4, 6, 5,34,54,674,345,234, 6, 4, 1] demo(de) print(de)