Python基础入门升级版第1&2次课作业


第一次课个人作业
题目:求从1到100的数字中所有能既能被3整除,又能被5整合的数字有哪些。
for i in range(1,101):
    if (i%3==0) & (i%5==0):
        print(i)


题目:输入一个字符串返回满足以下条件的字符串
如果字符串长度大等于3,添加 'ing' 到字符串的末尾
如果字符串是以 'ing' 结尾的,就在末尾添加 'ly'
如果字符串长度小于3,返回原字符串
s=input('input an English word:')
if s.endswith("ing"):
    s=s+'ly'
    print(s)
elif len(s)>=3:
    s=s+'ing'
    print(s)
else:
    print(s)


题目:判断回文
输入一个数字,如果是回文数字,返回True,否则 返回False
提示:回文:62426是回文数字
n=input('type a number:')
if (int(len(n))%2==0) & (n[0:int(len(n)/2)]==n[-1:int(-len(n)/2-1):-1]):
        print('True')
elif (n[0:int((len(n)-1)/2)]==n[-1:int((-len(n)-1)/2):-1]):
        print('True')
else:    
    print('False')


题目:输入一个字符串,返回满足以下条件字符串
找到字符串中的子串 'not' 和 'bad’
如果 'bad' 出现在 'not' 后面,就把 'not' ... 'bad' 之间包含的所有字符串替换成 'good'
s=input('input a string:')
if ('not' in s) & ('bad' in s):
    if (s.index('not') < s.index('bad')):
        sc=s.replace(s[(s.index('not')+3):(s.index('bad'))],'good')
        print(sc)
    else:
        print('not isn\'t before bad')
else:
    print('not and bad didn\'t exist at the same time!')


题目:输入一个字符串,把字符串拆分成两个等分
如果字符串长度是偶数,前一半和后一半的长度是相同的
如果字符串长度是奇数,则多出的一个字符加到前一半,如:'abcde',前一半是'abc',后一半是'de'
s=input('input a string without blank:')
if int(len(s))%2==0:
    print(s[0:int(len(s)/2)],s[int(len(s)/2):])
else:
    print(s[0:int((len(s)+1)/2)],s[int((len(s)+1)/2):])


题目:输入一个字符串返回满足以下条件的字符串
找出与字符串的第一个字母相同的字母,把它们替换成 '',除了第一个字母本身以外
例如: 输入'babble', 返回 'ba*le’
s=input('input a string:')
for i in range(1,int(len(s))):
    if s[i]==s[0]:
        sr=s[1:int(len(s))].replace(s[i],'*')
        s=s[0]+sr
print(s)


题目:输入一个字符串,返回满足以下条件的字符串
由字符串的最前面两个字母和最后两个字母组成的字符串
例如: 'spring' 返回 'spng', 'is' 返回 'is’
当输入的字符串长度小于2时,返回空字符串
s=input('input a string:')
if int(len(s))<2:
    print(' ')
elif int(len(s))>3:
    sh=s[:2];st=s[-2:]
    print(sh+st)
else:
    print(s)   


题目:落球计算
一球从100米高度自由落下,假设每次落地后反跳回原高度的一半;再落下,再弹起。请问第6次落地后会弹起多少米?请分别使用for循环与while循环。并使用break与contiune流程控制关键字
b=100;i=0
while b>10e-3:
    b/=2
    i+=1
    while i==6:
        print('height:',b,'times:',i)
        break


题目:创建一个python文件,接收两个参数(均为数字)并找出两个数字间所有的素数(即只能被1和自己整除的数)运行这个文件,并检查结果
fn=input('write first number:')
sn=input('write second number:')
fn=int(fn);sn=int(sn)
if fn==sn:
    print('two equal num has no num between them')
elif fn<sn:
    pass
else:
    tmp=fn;fn=sn;sn=tmp
notprime=[]
for i in range(int(fn)+1,int(sn)):
    for j in range(2,i):
        if i%j == 0:
            notprime.append(i)
for j in range(int(fn)+1,int(sn)):
    if j not in notprime:
        print(j)


第二次课个人作业
题目:使用循环和列表推导找出单词长度大于某个数字的单词
words = ["apple", "banana", "orange", "peach","kiwi"]
方法1:
words=['apple','banana','orange','peach','kiwi']
def findlen(n):
    bigthan=[]
    for i in words:
        if int(len(i))>n:
            bigthan.append(i)
    return bigthan
findlen(5)

方法2:
words=['apple','banana','orange','peach','kiwi']
[i for i in words if int(len(i))>5]


题目:寻找两个列表中的相同元素
l1=[1,2,5]
l2=[6,2,7]
l1=[1,2,5];l2=[6,2,7]
tup=[(i,j) for i in l1 for j in l2]
[k for k in tup if k[0]==k[1]]


题目:去除一个列表中相邻且重复的元素。
l1=[1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]
方法1:
l1=[1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]
uni1=[l1[0]]
for j in range(1,len(l1)): 
    if l1[j]!=l1[j-1]:
        uni1.append(l1[j])
uni1

方法2:
l1=[1,2,3,4,4,4,4,4,4,5,6,6,8,8,12,12,12,12,13]
l2=l1[1:]+['end']
l3=list(zip(l1,l2))
[l3[i][0] for i in range(len(l3)) if l3[i][1]!=l3[i][0]]


题目:用户名密码对应
给定两个列表,一个存放用户名,一个存放密码。请将用户名和密码按顺序进行对应为一个元素。
Username=[‘jack’,’bob’,’john’]
Password=[‘123’,’859’,’hello’]
Username=['jack','bob','john']
Password=['123','859','hello']
pair=zip(Username,Password);dict(pair)


题目:使用列表推导式,打印出颜色与尺寸的(组合)
colors=['black','white']
sizes=['S','M','L']
colors=['black','white']
sizes=['S','M','L']
[(i,j) for i in colors for j in sizes]


题目:词频统计
l1=['sklearn','AI','julyedu.com','Caffe','AI','sklearn‘]
对l1包含的单词,利用dict统计词频
对每个参数进行判断,若在则对应的value+1
否则根据该字符创建一个key并且value设置为1
最后输出该词典
l1=['sklearn','AI','julyedu.com','Caffe','AI','sklearn']
base={}.fromkeys(l1,0)
for item in l1:
    base[item]+=1
base


题目:实现行列互转
arr= [[1, 2, 3], [4, 5, 6], [7,8, 9], [10, 11, 12]]
方法1:
import numpy as np
arr=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
np.array(arr).T.tolist()

方法2:
arr=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
list(zip(arr[0],arr[1],arr[2],arr[3]))


题目:实现求指定长度的Fibonacci 数列
Fib数组初始为[0,1]
分别要求使用循环和数组实现
方法1:
def fibonacci(n):
    Fib=[0,1]
    a=Fib[0]
    b=Fib[1]
    i=2
    while i<n:
        tmp=a
        a=b
        b=a+tmp
        Fib.append(b)
        i+=1
    return Fib

test

fibonacci(10)   

方法2:
import numpy as np
def fibonacci2(n):
    Fib=[0,1]
    a=np.zeros(n)
    a[0]=Fib[0];a[1]=Fib[1]
    for i in range(2,n):
        a[i]=a[i-1]+a[i-2]
        Fib.append(int(a[i]))
    return Fib

test

fibonacci2(10)


题目:[ ]对应检查
输入含有[]的字符串,输出对中括号出现规则的检测结果
[] OK ][ NOT OK

[][] OK ][][ NOT OK

[[][]] OK []][[] NOT OK

[[][[]]] OK ][]][[][ NOT OK
s=input('type several [ and ]:')
dictbase={'[':0,']':0}
if s.count('[')!=s.count(']'):
    print("'[' and ']'have different number")
else:
    for i in s:
        if i=='[':
            dictbase['[']+=1
        elif (i==']') & (dictbase[']']<dictbase['[']):
            dictbase[']']+=1
        else:
            pass

print("'['and']'count:",dictbase)

if (dictbase['[']==dictbase[']']) & (dictbase['[']!=0):
    print("OK!")
elif dictbase['[']!=0:
    print("NOT OK!")
else:
    pass


七月这个页面显示的代码风格必须赞一个!
已邀请:

ClownFish

赞同来自:


fromkeys用得很巧妙呀~,字典用得很6
fib的那个用了numpy,用数组 就行,再改改,实现可以更简单
行列转换,zip函数用得很好,用numpy是偷懒,哈哈。

去除一个列表中相邻且重复的元素那题思路不错,加上一些解题思路的注释就更棒了。

找两个数字间素数那题,为啥最后还要一个循环呢,判断是否是素数的时候就搞定输出就行。

落球那题用了两层while?,一层就够吧。加上break。

要回复问题请先登录注册

返回顶部