python基础入门升级版 第一课第二课练习与作业 老车


第一节课练习
第一题
for i in range(1,101):

if i % 3 == 0 and i % 5 == 0:
print (i)

第二题
a = str(input("输入一个单词Konoyalo!"))
if len(a) >= 3:
print (a+'ing')
else:
print (a)

第三题
a = list(input("输入一个数字"))
b = list(reversed(a))
a == b

第四题
a = input("输入一个字符串")
if 'not' in a and 'bad' in a:
if a.index('not') < a.index('bad'):
print (a[:a.index('not')+3] + 'good' + a[a.index('bad'):])

第五题
a = input("输入一串字符")
if len(a) % 2 == 0:
b = int(len(a)/2)

else:
b = int((len(a)+1)/2)
l = a[:b]
r = a[b:]
print (l)
print (r)

第六题
s = input("给个字符串呗")
s1 = s.replace(s[0],'*')
print (s[0])
print (s[0] + s1[1:])

第七题
s = input("随便输入点什么")
if len(s) < 2:
print ('')
elif len(s) < 4:
print (s)
else:
print (s[:2] + s[-2:])

第八题
h = 100
print ('球从{}米落下'.format(h))
for i in range(1,100):
h = h/2
if i == 6:
print (h)
break
else:
i += 1
continue

课后作业
from sys import argv
n1 = int(argv[1])
n2 = int(argv[2])
print ('下面会找出{0}和{1}之间的所有素数'.format(n1, n2))
for i in range(min(n1, n2)+1, max(n1, n2)):
for i2 in range(3,i - 1):
if i % i2 == 0:
break
if i2 == i-2:
print (i)

第二节课练习

第一题
words = ['apple', 'banana', 'orange', 'peach', 'kiwi']

先来循环

n = int(input('找出单词长度大于》 的单词'))
for i in words:
if len(i) > n:
print (i)

再来列表推导

n = int(input('找出单词长度大于》 的单词'))
print ([i for i in words if len(i) > n])

第二题
l1 = [1, 2, 5]
l2 = [6, 2, 7]
print (set(l1) & set(l2))

用列表推导式

print ([i for i in l1 if i in l2])

第三题

l1=[1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]

列表推导式

l2 = []
n = len(l1)
if l1[0] != l1[1]:
l2.append(l1[0])

l2.extend([l1[i] for i in range(1, n-1) if l1[i] != l1[i - 1] if l1[i] != l1[i + 1]])

if l1[n-1] != l1[n-2]:
l2.append(l1[n-1])
print (l2)

第四题
Username = ['jack', 'bob', 'john']
Password = ['123', '859', 'hello']

对应的列表就叫Userinfo吧

Userinfo = []
for i in range(3):
Userinfo.append(Username[i] + ',' + Password[i])



print (Userinfo)

第五题
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
print ([(j, i) for j in sizes for i in colors])

第六题
l1 = ['sklearn', 'AI', 'julyedu.com', 'Caffe', 'AI', 'sklearn']
s1 = set(l1)
l2 = list(s1)
print (l2)
l3 = [l1.count(i) for i in l2]
d1 = {}
for i in range(len(l2)):
d1[l2[i]] = l3[i]
print (d1)

第七题
l1 = []
l2 = []
l3 = []
for i in range(len(arr)):
l1.append(arr[i][0])
l2.append(arr[i][1])
l3.append(arr[i][2])
arr2 = [l1, l2, l3]
arr2

第八题

循环

n1 = 0
n2 = 1
n = int(input('你想要多少个斐波那契数列呢?'))
i = 0
while i != n:
n3 = n2
n2 = n1 + n2
n1 = n3
print (n2)
i += 1

数组(是指列表推导式吗?)

n = int(input('你想要多少个斐波那契数列呢?'))
n1 = 0
n2 = 1
for i in range(n):
n3 = n2
n2 = n1 + n2
n1 = n3
print (n2)

课后作业

test = list(input('来输入几个中括号吧'))

while True:
n = len(test)
for i in range(len(test)-1):
if test[i] == '[' and test[i + 1] == ']':
del test[i]
del test[i]
break


if n == len(test):
print ("输错了,再检查一下?")
break


if len(test) == 0:
print ("正确!")
break
continue

3 个评论

第二题,好像没做按要求做完。
第八题的,continue放到了最后,好像没什么用了。

第二课,第三题,可以再优化优化,或者把思路备注上。
最后一题,把思路也备注下。。
第二题改成如下:
a = str(input("输入一个单词Konoyalo!"))
if len(a) < 3:
print (a)
elif a[-3:] == 'ing':
print (a + 'ly')
else:
print (a + 'ing')

第八题改成如下:
h = 100
print ('球从{}米落下'.format(h))
for i in range(1,100):
if i != 6:
h = h/2
i += 1
continue
else:
h = h/2
print (h)
break

第二题加注释:
# l2=[6,2,7]
l1 = [1, 2, 5]
l2 = [6, 2, 7]
print (set(l1) & set(l2)) #将两个列表转换成set之后求交集


# 用列表推导式
print ([i for i in l1 if i in l2]) # 列表推导式从所有l1中获取在l2也存在的元素

第三题加注释:
l2 = [] # 做一个空列表用来添加满足条件的元素
n = len(l1) # 这里先获取l1的长度,用来之后获取l1对应位置的元素
if l1[0] != l1[1]: # 【0】号元素要先提取出来判断,因为一会的列表推导式中会比较左右两边,而
# 『0』号元素左边是最右边一位,不是相邻元素了
l2.append(l1[0])

# 下面的列表表达式是选取了列表【1】号到【倒数第二号】的元素,选取其中左右元素都和它不一样的,然后用extend函数增添到l2这个列表中
l2.extend([l1[i] for i in range(1, n-1) if l1[i] != l1[i - 1] if l1[i] != l1[i + 1]])


if l1[n-1] != l1[n-2]: # 将最后一个元素单独拿出来判断的理由是和第一个元素一样的
l2.append(l1[n-1])
print (l2)

最后一题加备注:
test = list(input('来输入几个中括号吧')) #输入要测试的中扩号,格式改为列表以供修改
# 整体思路是,如果中扩号合规的话,一定可以将一对对相邻的【】消去至没有
while True:
n = len(test) # 先获得在最开始的列表长度,以用来判断这一次循环是否找到相邻的【】
for i in range(len(test)-1): # 这里的循环必须用列表总长度减一,因为如果循环到了最后一个元素,它
# 的右边是没有元素的,会报错
if test[i] == '[' and test[i + 1] == ']': # 这里是找相邻的【】
del test[i]
del test[i] # 为何要del两次test【i】呢?因为消去一次后,本来在i
# + 1位置的元素就自动变为i位置了

break #消去一次之后需要重新循环,因为列表的元素位置变化了

if n == len(test): # 假如 n == len(test),说明这次循环没找到相邻的【】,那就意味着
# test肯定存在不合规的中括号
print ("输错了,再检查一下?")
break

if len(test) == 0: # len(test) == 0,意味着所有元素都完美配对消去了,那输入的中扩号
# 是合 规的

print ("正确!")
break #找到了正解,自然可以结束程序
continue # 在前面条件都没满足时,意味着这次循环消去了一对【】,但还没有消完,需要下一次循
# 环判断
第八题改成如下:
把for和while循环都用起来。。。。

最后一题你的思路是将[]一个一个消除。是个idea...

要回复文章请先登录注册

返回顶部