【python】复习~python超基础习题练习

大部分代码是在ipython环境下,所以复制过来时有命令提示符~
题目所用知识点在题后写出
1、倒序输出10以内数字:for,range()
range()表示的范围是前闭后开

In [9]: for i in range(10,0,-1):
   ...:     print (i)
   ...:
   ...:
10
9
8
7
6
5
4
3
2
1

2、倒序打印 while

flag=-10
while flag:
    flag+=1
    print(flag)
    -------------
-9
-8
-7
-6
-5
-4
-3
-2
-1
0

3、输出0-1000内能被7整除的数字 for, range() ,break, if ;continue,while,if,break

---------方法1---------------
count=0
for i in range(0,1000,7):
    print(i)
    count+=1
    if count>=20:
        break
---------方法2------------
count=0
i=0
while True:  #是True 不是true
    print(i)
    i+=7
    count+=1
    if count>=20:
        break

4、打印奇偶数,range(),for,if;continue

-----------方法1-------------
In [11]: for i in range(10):
    ...:     if i % 2:
    ...:         print(i)
    ...:
1
3
5
7
9
------------方法2------------
In [12]: for i in range(10):
    ...:     if i % 2:
    ...:         print(i)
    ...:         continue
    ...:
    ...:
1
3
5
7
9

5、关于continue的用法:

In [17]: for i in range(10):
    ...:     if i % 2 == 1:
    ...:         continue #i如果为奇数,跳过当次循环,直接进入下次循环
    ...:     print(i)#i为偶数直接输出
    ...:
    ...:
    ...:
    ...:
    ...:
0
2
4
6
8
-----------------
In [16]: for i in range(10):
    ...:     if i % 2 == 0:
    ...:         continue
    ...:     print(i)
    ...:
    ...:
    ...:
    ...:
    ...:
1
3
5
7
9

6、break用法:
打印20个1-1000内7的倍数

In [20]: for i in range(0,1000,7):
    ...:     print(i)
    ...:     count+=1
    ...:     if count >=20:
    ...:         break
    ...:
0
7
14
21
28
35
42
49
56
63
70
77
84
91
98
105
112
119
126
133

ipython内查看函数用法举例:

In [17]: help (range)
#按	Q键退出帮助窗口

7、题目如下:
在这里插入图片描述
正序输出各位 input,if…else,for

num = int(input("please input a number between 0 and 99999"))
#input函数默认输出类型为字符串,因此需要类型转换
if 0 > num or num > 99999:
    print ('wrong input')
elif num >= 1000:
    if num >= 10000:
        digit=5
    else:
        digit=4
else:
    if num >= 100:
        digit=3
    elif  num >= 10:
        digit=2
    else:
        digit=1
print(digit) 
pre=0
print("---------------")
for i in range(digit,0,-1):
    cur = num//(10**(i-1))
    print(cur-pre*10)
    pre=cur

倒序输出各位 while,if,break

#正序
num=int(input('please input a number between 0 and 99999'))
#print(num)
digit=0
while True:
    print(num%10)
    num=num//10
    digit+=1
    if num == 0:
        break
print("你输入的位数是:",digit)

1、打印一个边长为n的正方形

N=int(input("输入边长n"))
for i in range(N):
    if i == 0 or i == N-1 :
        print(N*'x')
    else:
        print('x'+(N-2)*' '+'x')
 ------------------- 
输入边长n5
xxxxx
x   x
x   x
x   x
xxxxx

2、打印100内所有奇数和

sum=0
for i in range(1,100,2):
    sum+=i
else:
    print(sum)
---------------------
2500

3、求1到5的阶乘之和

N=int(input("输入一个数:\n"))
count=1
sum=0
for i in  range(1,N+1):
    count*=i
    sum+=count
    N=N-1
print(sum)

-----------------------
输入一个数:
5
153

4、给一个数,判断它是否是质数(素数)

#质数:只能被1和它本身整除,1不是素数,2是素数
N=int(input("input a number:\n"))
for i in range(2,N):
    if N % i == 0:
        print("NOT a prime")
        break
else:
    print("YES,a prime")
--------------------------
input a number:
24
NOT a prime      

4.1 打印100以内素数并求和

#100以内素数
def IsPrime(N):
    for i in range(2,N):
        if N % i == 0:
            return False
        return True
sum=2 #2是1不是
for i in range(3,100):
    if IsPrime(i):
        print(i)
        sum+=i
print(sum)

测试代码运行时间的三种方法

-----------1---------
import datetime
start = datetime.datetime.now()
      CODE
end = datetime.datetime.now()
print(end-start)

---------2------------
import time
start = time.clock()
	CODE
end = time.clock()
print(end-start)

--------3-----------
%%timeit 跑1000 loops ,然后求平均
CODE
#此法只能在ipython,notebook环境使用

5、输入两个数,比较大小后升序输出

I=int(input("输入数字1:\n"))
J=int(input("输入数字2:\n"))
if I >= J:
    print(J,I)
else:
    print(I,J)
------------------
#python没有三目运算符,但是有if..else...表示三目运算
#真值if条件else假值,因此上面的程序可改写为
I=int(input("输入数字1:\n"))
J=int(input("输入数字2:\n"))
print(J,I) if I >= J else  print(I,J)
输入数字1:
3
输入数字2:
4
3 4

6、输入N个数,求 每次 输入后的算术平均数 N

n=0
sum=0
print("Notice:input quit means exit the program")
while True :
    i = input(">>")
    if i == 'quit':
        break
    n += 1
    sum += int(i)
    avg = sum/n
    print(avg)
----------------

7、打印九九乘法表(左下和右上三角)

for i in range(1,10):
    for j in range(1,i+1):
        print(j,'x',i,'=',i*j,end=' ')
    print()
#右上角九九乘法表
line=' '
for i in range(1,10):
        for j in range(1,10):
            if i > j:
                line = '{} {} {:<4}'.format(' ',' ',' ')
            else:
                line = '{}*{}={:<4}'.format(i,j,i*j) #占位符
            print(line,end=' ')
        print()

8、打印菱形

N = int(input("input a number:\n"))
m = N // 2
print(m)
for i in range (-m,m+1):
    if i < 0:
        prespace = -i
    else:
        prespace = i
    print(prespace*' '+'*'*(N-prespace*2))
------------------
input a number:
7
3
   *
  ***
 *****
*******
 *****
  ***
   *
#三目运算符简化
N = int(input("input a number:\n"))
m = N // 2
print(m)
for i in range (-m,m+1):
     print(-i*' '+'*'*(N+i*2))if i < 0 else  print(i*' '+'*'*(N-i*2))
#特殊图像
for i in range(-3,4):
    if i == 0:
        print(7*'*')
    else:
        if i < 0:
            print(' '*(-i)+(4+i)*'*')
        else:
            print(3*' '+(4-i)*'*')
 ---------------------
  *
  **
 ***
*******
   ***
   **
   *
#
N=int(input("输入一个数字:\n"))
m = N // 2
for i in range (-m,m+1):
    if i == 0:
        print(N*'*')
    else:
        if i < 0:
             print(' '*(-i)+(m+1+i)*'*')
        else:
            print((N-m)*' '+(m+1-i)*'*')
 -----------------------
 输入一个数字:
9
    *
   **
  ***
 ****
*********
     ****
     ***
     **
     *
#三目运算符简化
N=int(input("输入一个数字:\n"))
m = N // 2
for i in range (-m,m+1):
    if i == 0:
        print(N*'*')
    else:
        print(' '*(-i)+(m+1+i)*'*') if i < 0  else print((N-m)*' '+(m+1-i)*'*')

9、斐波那契数列

在这里插入图片描述

#F(n)=F(n-1)+F(n-2)
print(1)
a=0
b=1
while True :
    
    c=a+b
    a=b
    b=c
    if c > 100:
            break
    print(c)

10、猴子吃桃问题

在这里插入图片描述

#第九天已经剩下一个桃子,第一天摘多少
n = 1
for i in range(1,10):
    n=2*(n+1)
    print(n)
----------------------
4
10
22
46
94
190
382
766
1534 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值