python 问题
1.循环输入
1 print("if you want exit, please enter q!\n") 2 num=[] 3 while True: 4 a=input("Please enter num:\n") 5 if (a == "q"): 6 break 7 else: 8 num.append(a)
2.内置函数
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
返回值:返回元组列表。
>>>a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) # 打包为元组的列表 [(1, 4), (2, 5), (3, 6)] >>> zip(a,c) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)] >>> zip(*zipped) # 与 zip 相反,可理解为解压,返回二维矩阵式 [(1, 2, 3), (4, 5, 6)]
cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
返回值:如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
但是Python 3.X 的版本中已经没有 cmp 函数,如果你需要实现比较功能,需要引入 operator 模块,适合任何对象,包含的方法有:
operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
3.python 判断一个字符串是否重现(后面跟前面的一致)
1 a = input("Please input a string ... ") 2 plalindrome = False 3 j = 1 4 while len(a) >= 2 and j <= len(a)-1: 5 if a[j-1] == a[j] and j <= len(a) - 2: 6 print(a[j-1] + a[j]) 7 plalindrome = True 8 if j == len(a)-1 and a[j] == a[j-1]: 9 print(a[j-1] + a[j]) 10 plalindrome = True 11 j = j + 1 12 if not plalindrome: print('No plalindrome!')
4.接受一个字符,在其后面加一个反向的拷贝,构成一个回文字符串.
1 s=input("please enter string:\n") #abc 2 s1=[] 3 s2=[] 4 for i in s: 5 s1.append(i) 6 s2=s1.copy() #将s1复制给s2 7 s2.reverse() #将s2进行翻转 8 for i in s2: 9 s1.append(i) #将s2的逐个字符串添加到s1中 10 st=''.join(s1) #将最终的s1列表转换为字符串,引号中是字符之间的分割符 11 print(st) #abccba
以上有一种超简单的方法:
1 s = input("please enter string:\n") 2 print a + a[::-1] #使用连接操作符以及索引
5.给出一个整数值,返回代表该值的英文。
1 #!/usr/bin/env python 2 units =['zero','one','two','three','four','five','six','seven','eight','nine','ten', 3 'eleven','twelve','thirteen','forteen','fifteen','sixteen','seventeen', 4 'eighteen','nineteen'] 5 tens =['twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety'] 6 hundreds = ['hundreds'] 7 8 while True: 9 myInput = input("Enter the num -->(input 'quit' to quit):") #字符串输入 10 if myInput == 'quit': 11 break 12 myInput_num = int(myInput) #将字符串输入转整型 13 Input_num = [] #列表 14 15 for i in myInput: #将输入的字符串转化为列表 16 Input_num.append(int(i)) 17 18 if myInput_num < 20: #20以下的英文输出 19 print(units[myInput_num]) 20 elif myInput_num < 100: #100以下的输出 21 if Input_num[1] == 0: 22 print(tens[Input_num[0] - 2]) 23 else: 24 print((tens[Input_num[0] - 2] + '-' + units[Input_num[1]])) 25 elif myInput_num < 1000: 26 if (Input_num[2] == 0 and Input_num[1] == 0): #第二、三位等于0(注:此语句需要放在最前,如果后两句先执行的话,会包含这种情况,最后一位会输出zero) 27 print(units[Input_num[0]] + ' ' + 'hundreds') 28 elif Input_num[1] == 0: #第二位等于0 29 print(units[Input_num[0]] + ' ' + 'hundreds' + ' '+ 'and' + ' ' + units[Input_num[2]]) 30 elif Input_num[2] == 0: #第三位等于0 31 print(units[Input_num[0]] + ' ' + 'hundreds' + ' '+ 'and' + ' ' + tens[Input_num[1] - 2]) 32 else: #每一位都不等于0 33 print(units[Input_num[0]] + ' ' + 'hundreds' + ' '+ 'and' + ' ' + tens[Input_num[1] - 2] + '-' + units[Input_num[2]])
6.写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转.
1 myString = input("Enter a String: \n") 2 3 for lett in range(len(myString)): 4 5 if myString[lett].isupper(): 6 7 myString = "%s%s%s" % (myString[:lett],myString[lett].lower(),myString[lett+1:]) 8 9 elif myString[lett].islower(): 10 11 myString = "%s%s%s" % (myString[:lett],myString[lett].upper(),myString[lett+1:]) 12 13 else: 14 15 pass 16 17 print(myString)
str.swapcase() 方法用于对字符串的大小写字母进行转换。返回值:返回大小写字母转换后生成的新字符串。
7.创建一个名字为findchr(string, char)的函数,在字符串string 中查找字符char,找到就返回该值的索引,否则返回-1.
创建一个名字为rfindchr(string, char)的函数,在字符串string 中从右开始查找字符char,找到就返回该值的索引,否则返回-1.
创建一个名字为subchar(string, origchar, newchar),如果找到匹配的字符就用新的字符替换原先字符.返回
修改后的字符串.
1 #!/usr/bin/env python 2 def findchr(string,char): 3 if char not in string: 4 print("-1") 5 else: 6 charlen = len(char) 7 i = 0 8 while i< len(string): 9 if string[i:i+charlen] == char: 10 print(i) 11 i+=1 12 13 14 def rfindchr(string,char): 15 if char not in string: 16 print("-1") 17 else: 18 mystring=string[::-1] 19 charlen = len(char) 20 i = 0 21 while i < len(mystring): 22 if mystring[i:i+charlen] == char[::-1]: 23 print(len(mystring)-charlen-i) 24 25 i+=1 26 27 28 def subchr(string,origchar,newchar): 29 if origchar not in string: 30 print("-1") 31 else: 32 charlen = len(origchar) 33 i = 0 34 while i< len(string): 35 if string[i:i+charlen] == origchar: 36 print(string.replace(origchar,newchar)) 37 i+=1 38 39 40 if __name__ == "__main__": 41 42 mystring = input('Please Enter a string ... \n') 43 44 mychar = input('Please Enter a string or char ... \n') 45 46 newchar = input("Please Enter another string or char ... \n") 47 48 findchr(mystring, mychar) 49 rfindchr(mystring, mychar) 50 subchr(mystring,mychar,newchar)
8.创建一个字典,并把这个字典中的键按照字母顺序显示出来;并根据已按照字母顺序排序好的键,显示出这个字典中的键和值;然后再根据已按照字母顺序排序好的字典的值,显示出这个字典中的键和值。
1 d={} 2 d["name"]="jane" 3 d["age"]="18" 4 d["sex"]="gril" 5 print(d) 6 7 d_key=sorted(d) 8 9 for key in d_key: 10 print("%s : %s" % (key,d[key])) 11 12 print(d.items()) 13 14 for i,j in sorted(d.items(),key=lambda value:value[1]): 15 print("%s : %s" % (i,j) )
9.给定两个长度相同的列表,用这两个列表里的所有数据组成一个字典。
1 n = [1,2,3,4,5,6,7,8,9] 2 s = ["abc","def","ghi","jkl","mno","pqr","stu","vwx","yz"] 3 d = {} 4 for i in range(len(n)): 5 d.setdefault(n[i],s[i]) 6 print(d)
10.颠倒字典中的键和值。用一个字典做输入,输出另一个字典,用前者的键做值,前者的值做键。
1 d = {"1":"abc","2":"def","3":"ghi"} 2 d1 = {} 3 for i in d: 4 d1.setdefault(d[i],i) 5 print(d1)
11.创建一个简单的雇员姓名和编号的程序,让用户输入一组雇员姓名和编号,可按照姓名或者编号排序输出。
1 def sort_db(db): 2 temp = {} 3 dict_db = {} 4 key = input('How to sort list:name or id? ') 5 if key == 'id': 6 for line in db: 7 temp.setdefault(line[1],line[0]) 8 else: 9 for line in db: 10 temp.setdefault(line[0],line[1]) 11 db2 = sorted(temp.items(),key=lambda d:d[0]) 12 print(db2) 13 for i in db2: 14 print(i[0],i[1]) 15 dict_db.setdefault(i[0],i[1]) 16 print('\n') 17 18 if __name__ == '__main__': 19 db = [] 20 print("enter 0 can exit!") 21 print('Please input name,id') 22 while True: 23 line = input() 24 if len(line)==1 and int(line)==0: 25 break 26 date = line.split(",") 27 #print (date) 28 db.append(date) 29 #print(db) 30 sort_db(db)