python每日一题总结4

20180609 qzd

每日一题14


  1. 输入三个整数x,y,z,请把这三个数由小到大输出。

my code

x=int(input('x:'))
y=int(input('y:'))
z=int(input('z:'))

list=[x,y,z]
list.sort()
print(list)

code

l=[]
for i in range(3):
    x=int(input('integer:\n'))
    l.append(x)
l.sort()
print(l)
  1. 斐波那契数列
    程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
    在数学上,斐波那契数列是以递归的方法来定义:

F0 = 0 (n=0)
F1 = 1 (n=1)
Fn = F[n-1]+ F[n-2] (n=>2)

my code:

f=[0,1]
n=int(input('n:'))
i=2
while i<=n:
    f.append(f[i-1]+f[i-2])
    i+=1
print(f)
print(f[n])

code:

##方法一:
def fib(n):
    a,b = 1,1
    for i in range(n-1):
        a,b = b,a+b
    return a
# 输出了第10个斐波那契数列
print fib(10)

##方法二:
# 使用递归
def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2) 
# 输出了第10个斐波那契数列
print fib(10)

##方法三:
def fib(n):
    if n == 1:
        return [1]
    if n == 2:
        return [1, 1]
    fibs = [1, 1]
    for i in range(2, n):
        fibs.append(fibs[-1] + fibs[-2])
    return fibs
# 输出前 10 个斐波那契数列
print fib(10)

总结:这题我赢了!哈哈!!!

  1. 将一个列表的数据复制到另一个列表中。
    程序分析:使用列表[:]。

my code:

list1=[]
i=input('input :\n')
list1.append(i)
while(i!=''):
    i=input('input :\n')
    list1.append(i)

list1.pop()
list2=list1[:]
print(list2)

code:

a = [1, 2, 3]
b = a[:]
print b

总结:我又赢了!!!撒花!!

  1. 暂停一秒输出,并格式化当前时间。
    程序分析:使用 time 模块的 sleep() 函数。

code:

import time
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
# 暂停一秒
time.sleep(1)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

my code:

s=[1,1]
n=int(input('查询第几个月的小兔兔:'))
i=2
while i<=n-1:
    s.append(s[i-2]+s[i-1])
    i+=1
print(s[n-1])

code:

f1 = 1
f2 = 1
for i in range(1,22):
    print('%12ld %12ld' % (f1,f2),)
    if (i % 3) == 0:
        print('')
    f1 = f1 + f2
    f2 = f1 + f2
  1. 判断101-200之间有多少个素数,并输出所有素数。
    程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

my code:

sushu=[]
for i in range(101,201):
    sushu.append(i)
    for j in range(2,i):
        if i%j==0:
            sushu.remove(i)
            break
print(sushu)
print('the total of sushu is %d '% len(sushu))

code:

h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
    k = int(sqrt(m + 1))
    for i in range(2,k + 1):
        if m % i == 0:
            leap = 0
            break
    if leap == 1:
        print '%-4d' % m
        h += 1
        if h % 10 == 0:
            print ''
    leap = 1
print 'The total is %d' % h

每日一题15


  1. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
    程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

my code:

xianhua=[]
for i in range(100,1000):
    a=int(i/100)
    b=int(i%100/10)
    c=int(i%10)
    if (a**3+b**3+c**3)==i:
        xianhua.append(i)
print(xianhua)

code:

for n in range(100,1000):
    i = n / 100
    j = n / 10 % 10
    k = n % 10
    if n == i ** 3 + j ** 3 + k ** 3:
        print n

撒花!

  1. 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
    (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
    (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

my code:

n=int(input('input int:'))
list=[]
def fenjie(n):
    for i in range(2,n+1):
        if i==n:
            list.append(i)
            return list
        if (n%i==0):
            list.append(i)
            break
    n=int(n/list[-1])
    fenjie(n)
    return list  
   
fenjie(n)
#print(list)
print('%d ='%n,end="" )
for i in range(len(list)-1):
    print('%d '%list[i],end="")
    print('*',end="")
print(list[-1])

code:

def reduceNum(n):
    print '{} = '.format(n),
    if not isinstance(n, int) or n <= 0 :
        print '请输入一个正确的数字 !'
        exit(0)
    elif n in [1] :
        print '{}'.format(n)
    while n not in [1] : # 循环保证递归
        for index in xrange(2, n + 1) :
            if n % index == 0:
                n /= index # n 等于 n/index
                if n == 1: 
                    print index 
                else : # index 一定是素数
                    print '{} *'.format(index),
                break
reduceNum(90)
reduceNum(100)
  1. 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
    程序分析:(a>b)?a:b这是条件运算符的基本例子。

code:

score = int(input('输入分数:\n'))
if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'
 
print '%d 属于 %s' % (score,grade)
  1. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
    程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'。

code:

import string
s = input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
i=0
while i < len(s):
    c = s[i]
    i += 1
    if c.isalpha():
        letters += 1
    elif c.isspace():
        space += 1
    elif c.isdigit():
        digit += 1
    else:
        others += 1
print ('char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others))
  1. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
    程序分析:关键是计算出每一项的值。

code:

Tn = 0
Sn = []
n = int(input('n = '))
a = int(input('a = '))
for count in range(n):
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
    print(Tn)
 
Sn = reduce(lambda x,y : x + y,Sn)
print( "计算和为:",Sn)

每日一题3
每日一题5

你可能感兴趣的:(python每日一题总结4)