浙大版《Python 程序设计》题目集

网站地址   参考答案

输入两个整数求和

a=input()
b=input()
print(int(a)+int(b))

一行内输入三个整数,然后求b平方减去4ac

a, b, c=input().split()
d=pow(int(b),2)-4*int(a)*int(c)
print(d)

输出“Python语言简单易学”

s = "Python语言简单易学"
print(s.encode("utf-8"))

结果为:
b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe5\xad\xa6Python'

计算 11+12+13+...+m

a = input()
j=0
for i in range(11,int(a)+1):
    j=j+i
print('sum = %d' %j)

计算分段函数(保留一位小数)

x= float(input())
if x == 0:
    print('f(%.1f) = %.1f'%(x,x))
else:
    print('f(%.1f) = %.1f' %(x,1/x))

阶梯电价

a=float(input())
if a<0:
    print('Invalid Value!')
elif a<50:
    print('cost = %.2f' %(a*0.53))
else:
    a=50*0.53+(a-50)*0.58
    print('cost = %.2f'%a)

特殊a串数列求和

a,n = input().split()
j=a
b=[]
for i in range(0,int(n)):
    j=int(a)*pow(10,i)*(int(n)-int(i))
    b.append(j)
t=0
for i in b:
    t=t+i
print('s = %d' %t)

求奇数分之一序列前N项和

本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。

n = int(input())
i=1
t=0
for i in range(0,n):
    t=float(t+1/(2*i+1))
    i+=1

print('sum = %.6f'%t)

 求交错序列前N项和

本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

n = int(input())
i=1
t=0
for i in range(0,n):
    t=float(t+(i+1)/(2*i+1)*pow(-1,i))
    i+=1

print('%.3f'%t)

产生每位数字相同的n位数

 

a,b = input().split(',')
a=int(a)
b=int(b)
t=0
for i in range(0,b):
    t=t+a*pow(10,i)

print(t)

注:input()输入一个数字的话,默认得到一个字符串,比如输入2,如果将这个2乘以2,我们得到的是22(字符串的乘法)。

转换函数使用

输入一个整数和进制,转换成十进制输出

a,b= input().split(',')
c=int(a,int(b))
print(c)

注:int('a',  b)得到的就是十进制结果,其中a为任意进制的数,b为对应的进制数。

 

比较大小

 

a,b,c=input().split()
a=[int(a),int(b),int(c)]
mm=sorted(a)
mm[0]=str(mm[0])
mm[1]=str(mm[1])
mm[2]=str(mm[2])
r=[mm[0],'->',mm[1],'->',mm[2]]
r="".join(r)
print(r)

求平方与倒数序列的部分和

 

a, b = input().split()
a= int(a)
b=int(b)
t= 0

for i in range(a,b+1):
    t=float(t+1/pow(i,1)+pow(i,2))
print("sum = %.6f" %t)

输出三角形面积和周长

a, b,c = input().split()
a= int(a)
b=int(b)
c=int(c)

if a >=(b+c) or a<=abs(b-c):
    print("These sides do not correspond to a valid triangle")
else:
    l=a+b+c
    t=float(l/2)
    s=pow((t*(t-a)*(t-b)*(t-c)),1/2)
    print("area = %.2f; perimeter = %.2f"%(s,l))

求整数段和

 

a,b=input().split()
a=int(a)
b=int(b)
t=list(range(a,b+1))
for i in t:
    i=int(i)
    if (i-a)%5 ==0 and i!=a:
        print()
        print("{0:>5}".format(str(i)),end="")
    else:
        print("{0:>5}".format(str(i)),end="")
m=sum(t)
print()
print("Sum = {0}".format(m))

注:上面的{0:>5}写成{:>5}也行。>表示右对齐,5表示占据五个位置。0表示format对应的第一个元素。

大于身高的平均值

 

a=input().split()   #直接得到list a只不过里面都是str
a=[int(i) for i in a]  # list中的str型数字全部转换为数字
ave=sum(a)/len(a)     # 求平均值
for i in a:
    if i >ave:
        print(i,end=" ")

查找指定字符

 

a=input()
b=input()
t=list(b)          #b里面的空格也将作为list t中的元素
m=len(t)
mm=list(range(0,m))  #得到一个int的list
r=[]
for i in mm:
    if t[i]== a:
        r.append(i)
    
if len(r)>0:
   print("index = {0}".format(max(r)))
else:
   print("Not Found")

输出字母在字符串中位置索引

 

a=list(input())
b=input().split()
n=len(a)
a.reverse()
t=list(enumerate(a))
for index,s in t:
    if s==b[0]:
        print((n-index-1),b[0])
    if s == b[1]:
       print((n - index - 1),b[1] )

求最大值及其下标

 

a=int(input())
b=input().split()
b=[int(i) for i in b]
mmm=b.index(max(b))  #index只找到第一个最大值
print(max(b),mmm)

字符串逆序

输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

a=list(input())
a.reverse()
print("".join(a))   #""里面没有元素,直接连接

求整数的位数及各位数字之和

对于给定的正整数N,求它的位数及其各位数字之和。

a=list(input())
n=len(a)
tt=[int(i) for i in a]
tt=sum(tt)
print(n,tt)

字符串排序


程序对的,但是运行超时

a=input().split()
p=4
print("After sorted:")
while p>-1:
 for i in range(0,p):
    m = [a[i][0] for i in range(0, p)]
    m=min(m)
    if a[i][0]==m:
        print(a[i])
        del a[i]     #每取到一次最大值,就输出这个最大值,然后删除这个最大值
        p=p-1

改进(用字典)

a=input().split()
print("After sorted:")
tt={a[i][0]:a[i] for i in range(0, 5)}
m=sorted(tt)
for i in range(0,5):
  print(tt[m[i]])

统计一行文本的单词个数

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

a=input().split()
t=len(a)
print(t)

字符串字母大小写转换

本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。

a=input()
a=a.swapcase()  #大小写交换
a=list(a)    # 打散
del a[-1]   #删除最后一个元素
print("".join(a))

字符串转换成十进制整数(部分正确

zzz=input()
a=list(zzz)
b=list(zzz)
l=len(a)
z=0
p=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","a","b","c","d","e","f"]
t=[]
h=[]
for i in range(0,l):
    if p.count(a[i])== 0:
       t.append(i)
    else:
       h.append(i)

for i in t:
    i=i-z
    del a[i]
    z=z+1
a="".join(a)
a=int(a,16)


if b[0:h[0]].count("-") == 0:
    ppp=1
else:
    ppp=-1
a=a*ppp
print(a)

注意:b=a,那么后面a变化的话,b也会变

字符转换

a=input()
a=list(a)
t=list(range(0,10))  #注意是10
t=[str(i) for i in t]
p=[]
for i in a:
    if t.count(i) != 0:
       p.append(i)
p="".join(p)
p=int(p)
print(p)

网友答案

s=input()
su=0
for i in range(0,len(s)):     #确定好range函数的范围
    if "0"<=s[i]<="9":     
        su=su*10+int(s[i])
print(su)

字符串替换

a=list(range(65,91))
t=[chr(i) for i in a]
b=input()
b=list(b)
for i in range(0,len(b)):
    if   "A"<=str(b[i])<="Z":   
        # print(i)
        # print(ord(i))
        b[i]=chr(155-ord(b[i]))  # 字符和ASCII码转换
        # print(i)
pp="".join(b)
print(pp)

 

Leave a Reply