python oj习题记录2

1034: 列表实现筛选法求素数

import math
list=[]
x=int(input())
def su(n):
    for i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            return 0
    return 1
t=0
i=x
while(1<i):
    if su(i)==1:
        list.append(i)
        t+=1
    if t==2:
        break
    i=i-1
list.reverse()
print(list)

最后用了一个reverse函数代表着列表的逆转。

1035: 圆周率的计算

利用撒点法

import random
n=int(input())
m=int(input())
random.seed(m)
t=0
for i in range(n):
    x=random.random()
    y=random.random()
    if x**2+y**2<=1:
        t+=1
print("{:.6f}".format(t/n*4))            

调用是random.random!!!

1036: 凯撒密码

m=input()
n=int(input())
list=""
for i in range(len(m)):
    if "a"<=m[i]<="z":
        c=ord(m[i])-ord('a')
        list+=chr((c+n)%26+ord('a'))
    elif "A"<=m[i]<="Z":
        c=ord(m[i])-ord('A')
        list+=chr((c+n)%26+ord('A'))
    else:
        list+=m[i]
print(list)

注意字符串的建立以及字符对应unicode编码寻找函数ord

1037: 字符串重复判断

(在我看来这是一个难题)

1039: Life, the Universe, and Everything

l=[]
while(1):
    n=int(input())
    if n==42:
        break
    else:
        l.append(n)
for i in range(len(l)):
    print(l[i])

1040: 23333

n,p=map(int,input().split(" "))
list=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
lst=''
while(n!=0):
    lst+=(list[n%p])
    n=n//p
print(lst[::-1])

[::-1]用法我不知道是啥意思。。。。。。但这样就可以逆置字符串

这种进制转换的方法值得学习

1041: 整数数列求和

n,a=input().split(" ")
n=int(n)
s=0
for i in range(1,n+1):
    s+=int(a*i)
print(s)

不知怎的一直显示结果报错,明明测试数据试过了都是对的。

1042: 星号三角形

m=int(input())
n=int((m-1)/2)+1
for i in range(1,n+1):
    print(" "*(n-i)+'*'*(2*i-1)+" "*(n-i))

只有这样才能保证不报错

1043: 手机短号

n=int(input())
for i in range(n):
    a=input()
    if len(a)==11:
        print('6'+a[-5:])
    else:
        print("Halation - I can't join it!")

1044: aaaa + bbbb

1046: 有理数四则运算1(有点离谱)

都不是所学的,要再了解一个库函数

from fractions import Fraction
s1=input()
s2=input()
a=Fraction(s1)+Fraction(s2)
c=str(a.numerator)
d=str(a.denominator)
print(c+'/'+d)

1050: 分级

m=int(input())
c=[]
c=list(map(int,input().split(" ")))
L,R=map(int,input().split(" "))
sum=0
for i in range(m):
    sum+=c[i]
s=0
t=1
for i in range(m):
    s+=c[i]
    if L<=s<=R and L<=(sum-s)<=R:
        print(i+2)
        t=0
        break
if t==1:
    print('0')

这是正确的,但可能不是很严谨

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值