1 m =list(map(str,input().split())) 2 print(m) 3 str1 = m[-1].rstrip() 4 print(len(str1)) 5 6 print(len(list(map(str,input().split()))[-1].rstrip()))
1 while True: 2 try: 3 in_str = input() 4 if len(in_str) > 5000 or len(in_str) == 0: 5 raise Exception 6 last = in_str.strip().split(" ")[-1] 7 leng = len(last) 8 print(leng) 9 break 10 except Exception: 11 print("字符串非空且长度小于5000,请再次输入:")
2
1 # 计算字符串最后一个单词的长度,单词以空格隔开。 2 while True: 3 try: 4 a = input() # 输入一个字符串 5 b = input() # 输入一个字母 6 count = 0 7 for i in range(len(a)): 8 if a[i].lower() == b.lower(): 9 count += 1 10 print(count) 11 except: 12 break
3\
1 # 先添加0再切片 2 while True: 3 try: 4 str1 = input() 5 if str == "": 6 continue 7 if 0 < len(str1) <= 8: 8 m = 8 - len(str1) 9 s = str1 + m * str(0) 10 print(s) 11 elif len(str1) % 8 == 0: 12 for i in range(len(str1) // 8): 13 print(str1[i * 8:i * 8 + 8]) 14 else: 15 m = str1 + (8 - (len(str1)) % 8) * str(0) 16 for i in range(len(str1) // 8 + 1): 17 print(m[i * 8:i * 8 + 8]) 18 except: 19 break
4\
用自带的函数
1 while True: 2 try: 3 str1 =input() 4 print(int(str1,16)) 5 except: 6 break
二进制转换
1 def funx(n): 2 result ='' 3 if n: 4 result =funx(n//2) 5 return result+str(n%2) 6 else: 7 return result 8 9 while True: 10 try: 11 12 n = int(input()) 13 print(bin(n)) 14 print(funx(n)) 15 except: 16 break
Python内置进制转换函数(实现16进制和ASCII转换)
Python进制转换(二进制、十进制和十六进制)
Python内置函数进制转换的用法
5
1 while True: 2 try: 3 import math 4 num = int(input()) 5 s = '' 6 prime = 2 7 while prime < math.sqrt(num) + 1: 8 if num % prime != 0: 9 prime += 1 10 else: 11 num = num // prime 12 s += str(prime) + ' ' 13 prime = 2 14 if num >= 2: 15 s += str(num) + ' ' 16 print(s) 17 except: 18 break
大多数同学只关注到了一开始的时候使用平方根降低复杂度,然而忽略了后续进一步的优化,假如测试用例加上2的1000次方会如何?
使用while循环会比使用for循环时间复杂度要低,for循环的条件在循环中是不可变化的,而while循环每一次都可以重新调整条件缩小范围(如果条件有变化),从而这个时间复杂度差不多是12logn\frac{ 1 }{ 2 }\log{n}21logn,而高赞题解所使用的for循环时间复杂度是n\sqrt{ n }n