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
View Code

 以上有一种超简单的方法:

1 s = input("please enter string:\n")
2 print a + a[::-1]       #使用连接操作符以及索引
View Code

 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]])
View Code

 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) 
View Code

 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)
View Code

 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) )
View Code

 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)
View Code

 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)
View Code

 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)
View Code

 

posted @ 2017-10-11 13:22  Christal_11  阅读(228)  评论(0编辑  收藏  举报