#1.获取1000以内所有三位数
i =100while i <1000:#假设i的百位数是a,十位数是b,个位数是c。
a = i //100
b =(i //10)%10#求b第二种方法#b = (i - a *100) // 10
c = i %10#2.判断是否为水仙花数if a **3+ b **3+ c **3== i:print(i)
i +=1
1
2
3
4
5
6
7
8
9
10
11
12
13
二、获取用户输入的任意数,判断其是否为质数
质数
:只能被1和它本身整除的数就是质数,如2、3、5、7、11、13等。
num =int(input('Please input a number which is bigger than 1:'))# 2.定义变量
i =2#创建一个标记用来记录num是否是质数,默认为质数
flag =1while i < num:#满足下面条件,则num移动不是质数(逆向思维)if num % i ==0:#一旦符合此判断条件,则证明num不是质数
flag =0
i +=1if flag:print(num,'is a prime')else:print(num,'is not a prime')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
三、循环嵌套
1.要求:在控制台输出五行“*”,每行五个。
方法一:
print('*****\n'*5)
1
方法二:
i =0while i <5:print('*****')
i +=1
1
2
3
4
方法三:
#外层循环控制高度(列),内层循环控制宽度(行)
i =0while i <5:
j =0while j <5:print('*',end='')
j +=1print()
i +=1
1
2
3
4
5
6
7
8
9
2.
要求:打印出以下图形
*
**
***
****
*****
方法一:
i =0while i <5:
j =0while j < i +1:print('*',end='')
j +=1print()
i +=1
1
2
3
4
5
6
7
8
方法二:
i =0while i <5:
i +=1print('*'* i)
1
2
3
4
3.
要求:打印出以下图形
*****
****
***
**
*
方法一:
i =0while i <5:
j =0while j <5- i:print('*',end='')
j +=1print()
i +=1
import random
#定义一个列表,用来存储用户猜过的数字
lst =[]
i =0while i <9:
number =int(input('Please input a number between 1 and 10:'))#把用户猜过的数字添加到列表中
lst.append(number)print('Sorry,you are wrong!!!')
i +=1whileTrue:#number_x between 1 and 10
number_x = random.randint(1,10)if number_x in lst:continueelse:breakprint('The right number is',number_x)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
方法二:
import random
#定义一个列表,用来存储用户猜过的数字
lst =[]
i =0while i <9:
number =int(input('Please input a number between 1 and 10:'))#把用户猜过的数字添加到列表中
lst.append(number)print('Sorry,you are wrong!!!')
i +=1
j =1while j <11:if j in lst:
j+=1continueelse:breakprint('The right number is',j)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
六、求100以内所有质数
i =2while i <=100:#创建一个标记
flag =1#判断i是否为质数:先获取所有可能成为i的因数的数
j =2while j < i:#判断i是否能被j整除,如果可以,则i不是质数if i % j ==0:
flag =0
j +=1if flag:print(i,end='\t')
i +=1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
七、在程序中加入时间
对程序运行进行计时:
from time import*#获取程序开始时间
start = time()
i =2while i <=10000:#创建一个标记
flag =1#判断i是否为质数:先获取所有可能成为i的因数的数
j =2while j < i:#判断i是否能被j整除,如果可以,则i不是质数if i % j ==0:
flag =0
j +=1if flag:print(i,end='\t')
i +=1#获取程序结束时间
end = time()print()print('The program runs for',end-start,'second')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
程序运行时间如下图:
如将上限改为100000时,运行时间如下图:
很显然,运行时间扩大了不止10倍,达到了100倍之多。
八、质数第一次优化
from time import*#获取程序开始时间
start = time()
i =2while i <=10000:#创建一个标记
flag =1#判断i是否为质数:先获取所有有可能成为i的因数的数
j =2while j < i:#判断i是否能被j整除,如果可以,则i不是质数if i % j ==0:
flag =0#一旦进入判断证明i不是质数,内层循环根本没有必要再继续执行break
j +=1if flag:print(i,end='\t')
i +=1#获取程序结束时间
end = time()print()print('The program runs for',end-start,'second')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
※在代码行
flag = 0
后加入break,会减少很多不必要的执行,从而减少时间,提升运行效率。
程序运行时间如下图:
如将上限改为100000时,运行时间如下图:
运行时间也扩大了近100倍。
九、质数第二次优化
from time import*#获取程序开始时间
start = time()
i =2while i <=10000:#创建一个标记
flag =1#判断i是否为质数:先获取所有有可能成为i的因数的数
j =2#没有必要对从2到i的书都进行判断while j <= i **0.5:#判断i是否能被j整除,如果可以,则i不是质数if i % j ==0:
flag =0#一旦进入判断证明i不是质数,内层循环根本没有必要再继续执行break
j +=1if flag:print(i,end='\t')
i +=1#获取程序结束时间
end = time()print()print('The program runs for',end-start,'second')