python入门10 循环语句

两种循环:

1 for in

2 while

 

#coding:utf-8
#/usr/bin/python
"""
2018-11-03
dinghanhua
循环语句
"""

'''for in'''
#打印0-9
for i in range(10):
    print(i)
#取出元组中不能被2整除的数据
turple = (1,13,33,54,8329)
for i in turple:
    if(i%2 == 1):
        print(i)

'''while'''
#打印0-9
i = 0
while i < 10:
    print(i)
    i+=1

'''break跳出循环'''
while True:
    str = input('输入字符串')
    print(str)
    goon = input('输入y继续')
    if goon != 'y':
        break

'''continue跳出本次循环'''
for i in range(10):
    if i%2 == 0:
        continue
    print(i)

'''enumerate() 同时取出索引和值'''
print(enumerate(turple))
for i in enumerate(turple):
    print(i)
for i,j in enumerate(turple):
    print(i,j)

'''else 循环正常执行完执行else语句块'''
x = 1
while x < 10:
    print(x);
    x +=2
    #break  #未正常执行完不执行else
else:
    print('循环正常执行完毕')
    x=1 #恢复初始值
print('x:',x)

'''pass占位语句'''
while x < 10:
    if x == 2:
        pass
    print(x)
    x += 1

'''/r 在行开头输出'''
# while True:
#     for char in ['-','/','|','\\']:
#        print(char+'\r',end='')

 

'''n!'''
n = 10
result = 1
i = 1
while i <= n:
    result = result * i
    i += 1
print(result)

 

'''n!之和 1!+2!+3!'''
n = 10
sum = 0

for i in range(1,n+1):
    mul =1 #存储阶乘
    for j in range(1,i+1):
        mul = mul * j
    print('%d 的阶乘: %d'%(i,mul))
    sum += mul #阶乘之和
print(sum)

 

'''100以内最大平方数'''
from math import sqrt
for i in range(99,1,-1): #倒着取
    #print(sqrt(i))
    if sqrt(i) == int(sqrt(i)):
        print(i)
        break

 

'''回文数判断'''
i =12393466439321
str = str(i) #转换成字符串
len = len(str)
for index in range(0,len//2): #判断前半段即可
    if str[index] != str[-index-1]:
        print(i,'不是回文数')
        break
else:
    print(i,'是回文数')

 

'''100-999之间 各数字3次方之和等于数字本身的数字'''
for i in range(100,999):
    if (i%10)**3 + (i//10%10)**3 + (i//100)**3 == i:
        print(i)
#转化为字符串,再取每个字符
for i in range(100,999):
    str1 = str(i)
    sum = 0
    for char in str1:
        sum += int(char)**3
    if sum == i :
        print(i)

 

'''100以内的素数'''
for i in range(1,100):
    sign = 1#标志位 1是素数,0不是素数
    for j in range(2,i//2+1):
        if i % j == 0:
            sign =0
            break
    if sign == 1 :
        print(i,'是素数')
for i in range(2,100):
    for j in range(2,i//2+1):
        if i % j == 0:
            break
    else:
        print(i,'是素数') #正常结束所有循环,说明是素数

 

'''冒泡排序'''
list = [13,3,65,2,655,54,12]

for index in range(0,len(list)):
    for index2 in range(index+1,len(list)):
        if list[index] > list[index2]:
            list[index],list[index2] = list[index2],list[index]
    #print(list)
print(list)

 

'''选择排序 每次选出剩下的里面最大或最小的放到前面'''
list = [33,12,22,129,10,35]
for i in range(len(list)):
    maxindex = i
    for j in range(i+1,len(list)):
        if(list[j] > list[maxnum]):
            maxindex = j
    list[i],list[maxindex] = list[maxindex],list[i]
    print(list)

 

'''一个数= 所有因子之和'''
for  i in range(1,1000):
    sum = 0
    for j in range(1,i//2+1):
        if i%j == 0 :
            sum += j
    if (i == sum):
        print(i)

 

'''出租车
3公里内10元 3公里以后每0,5公里1元
等待2.5分钟加1元
超过15公里加原价50%'''

length_km = 4.6
waittime_sec = 60

waittime_fee = waittime_sec//150 if waittime_sec%150==0  else waittime_sec//150+1 #等待时间按计费单位
money = waittime_fee * 1

if length_km <= 3:
    money += 10
elif length_km > 3:
    km = (length_km-3)/0.5  if (length_km-3)/0.5%1 ==0 else (length_km-3)/0.5//1+1 #超出0.5里程个数数
    money += 10 + km * 1
    if length_km >= 15:
        money *= 1.5
print(money)

 

'''打印空心矩形'''
h = 4
w = 5
for i in range(0,h):
    for j in range(0,w):
        if i == 0 or i == h - 1 or j==0 or j==w-1:
            print('*', end='')
        else:
            print(' ',end='')
    print('\r')

 

posted @ 2018-11-04 15:11  dinghanhua  阅读(1099)  评论(0编辑  收藏  举报