错题笔记:
1.
1002 写出这个数
n = int(input())
str1 = str(n)
s = 0
for i in range(len(str1)+1):
a = n%10
s += a
n = n//10
str2 = str(s)
list1 = list(str2)
list2 = []
dict = {'0':'ling','1':'yi','2':'er','3':'san','4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu'}
for j in range(len(list1)):
if list1[j] not in dict: #A
print("Not exist") #B
else:
list2.append(dict[list1[j]])
str3 = ' '
print(str3.join(list2))
1)创建字典时,为了防止字典无指定关键字报错,可以加上A,B两行代码。
2)用除法一定要取整,否则会有很长的小数,这样在测试时就会报错,因为字典没有小数点的关键字,所以有1)。
3)join函数只能和列表使用,而且str3(间隔符)和list(待操作列表)的位置别搞反了。
1003 我要通过!
写一个判断函数,首先要定位“P”和“T”的位置,然后把P前面的“A”,P和T之间的“A”,T后面的“A”分别放进列表,根据条件返回0和1。
1004 成绩排名
for i in range(n):
a,b,str1 = map(str,input().split())
c = int(str1)
list1.append(a)
list2.append(b)
list3.append(c)
max = list3[0]
min = list3[0]
for i in range(1,len(list3)):
if(list3[i]>max):
max = list3[i]
d = list3.index(max)
for i in range(1,len(list3)):
if(list3[i]<min):
min = list3[i]
e = list3.index(min)
print(list1[d],list2[d],sep=' ')
print(list1[e],list2[e],sep=' ')
1)输入字符串时,可以直接像列表一样,对指定的字符进行比较,例如:
n = input()
if(n[1] == '1'):
print("答案正确")
2)快速生成有序列表,如:
list2 = [1, 2, 3, 4, 5, 6, 7 ]
print( "list2[1:5]: ", list2[1:5])
#输出list2[1:5]: [2, 3, 4, 5]
[1,5]中1,5表示索引,且不包含索引5对应元素。
3)sep是连接输出元素的字符。
4)思路:把名字放进一个列表,把学号放进一个列表,把成绩放进一个列表,判断成绩列表中最大最小对应的索引,再对应输出名字列表和学号列表。
异或运算:
相同的数字异或的结果是0:2^2=0
和0异或是本身:0^2=2
def one_number(alist):
'''一个数组中只有1个数字出现1次,其余都出现偶数次'''
a=0
for i in alist:
a^=i
return a