Python基础学习Day2-条件循环

2020-07-23  本文已影响0人  怕热的波波

收获

今天学习的内容刚好是之前学习的薄弱部分,一直不太理解循环语句的程序,通过今天的学习,大概了解了整个过程,后面会在实际应用中把今天学习的用上,达到学以致用的效果。

1. 条件语句

import numpy as np

num = np.random.randint(100)
guess = input("猜数字0~99:")
guess = int(guess)
if guess==num:
    print('Correct')
else:
    print('Wrong, the num is %s'%num)

#猜数字0~99:60
#Wrong, the num is 1

assert,模块运行前先检查是否符合先决条件

num = np.random.randint(100)
guess = int(input("猜数字0~99:"))
assert 0 <= guess <=99, "范围错了!"
if guess==num:
    print('Correct')
else:
    print('Wrong, the num is %s'%num)
#猜数字0~99:100
#AssertionError: 范围错了!

2.循环语句

num = np.random.randint(100)
n = 0
while n <7:
    guess = int(input("猜数字0~99:"))
    assert 0 <= guess <=99, "范围错了!"
    if guess==num:
        print('Correct!')
        break
    elif guess>num:
        print('Lower!')
        n += 1
    else:
        print('Higher!')
        n += 1
print('游戏结束,猜了%s次'%n)

'''
猜数字0~99:50
Higher!
猜数字0~99:75
Higher!
猜数字0~99:87
Higher!
猜数字0~99:96
Lower!
猜数字0~99:93
Lower!
猜数字0~99:91
Lower!
猜数字0~99:88
Correct!
游戏结束,猜了6次
'''

for循环用于字典

dict = {'a':3, 'b':4, 'c':5, 'd':2}
for key in dict.keys():
    print(key)
print('----------')
for key, value in dict.items():
    print(key, value)
print('----------')
for value in dict.values():
    print(value)
'''
a
b
c
d
----------
a 3
b 4
c 5
d 2
----------
3
4
5
2
'''

for循环与else合用,会先把for循环执行完

for num in range(10,20):
   for i in range(2, num):
       if num % i == 0:
           j = num/i
           print('%s = %s * %s'%(num, i ,j))
           break
   else:
       print('%s是一个质数'%num)
'''
10 = 2 * 5.0
11是一个质数
12 = 2 * 6.0
13是一个质数
14 = 2 * 7.0
15 = 3 * 5.0
16 = 2 * 8.0
17是一个质数
18 = 2 * 9.0
19是一个质数
'''

enumerate()

alphabet = 'abcdefghijk'
for i, letter in enumerate(alphabet,1):
    print(i,letter)
'''
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
'''

continue 停止本轮循环并开始下轮,break是终止整个循环

for i in range(10):
    if i % 2 != 0:
        print(i)
        continue
    i += 2
    print(i)
'''
2
1
4
3
6
5
8
7
10
9
'''

占位语句pass

def new_func():
    pass

Python Comprehensions

x = [i for i in range(1000,1100) if (i%2) != 0 and (i%3) == 0]
print(x)
#[1005, 1011, 1017, 1023, 1029, 1035, 1041, 1047, 1053, 1059, 1065, 1071, 1077, 1083, 1089, 1095]

x = [[i, j] for i in range(3) for j in range(3)]
print(x)
#[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

dict = {i:(i%2)==0 for i in range(10)}
print(dict)
#{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}

综合示例

passwd = ['123', '456', '789']
valid = False
count = 3
while count>0:
    num = input('Input password:')
    for item in passwd:
        if num == item:
            valid = True
            break
    if valid != True:
        print('Invalid input')
        count -= 1
    else:
        break
'''
Input password:245
Invalid input
Input password:123
'''

练习题

1、编写一个Python程序来查找那些既可以被7整除又可以被5整除的数字,介于1500和2700之间。

x = [i for i in range(1500,2701) if i%7==0 and i%5==0]
list1 = [[i,j] for i, j in enumerate(x,1)]
print(list1)
'''
[[1, 1505], [2, 1540], [3, 1575], [4, 1610], [5, 1645], [6, 1680], [7, 1715], [8, 1750], [9, 1785], [10, 1820], [11, 1855], [12, 1890], [13, 1925], [14, 1960], [15, 1995], [16, 2030], [17, 2065], [18, 2100], [19, 2135], [20, 2170], [21, 2205], [22, 2240], [23, 2275], [24, 2310], [25, 2345], [26, 2380], [27, 2415], [28, 2450], [29, 2485], [30, 2520], [31, 2555], [32, 2590], [33, 2625], [34, 2660], [35, 2695]]
'''

2、龟兔赛跑游戏
补充map(func, nums),函数的映射

v1, v2, t, s, l = map(int, input().split())
time, s1, s2 = 0, 0, 0
while s1<l and s2<l:
    s1 += v1
    s2 += v2
    time += 1
    if s1>=l or s2>=l:
        break
    if s1-s2 >= t:
        s2 += v2*s    
if s1>s2:
    print('R')
elif s1<s2:
    print('T')
else:
    print('D')
print(time)
'''
10 2 5 2 100
R
10
'''
上一篇下一篇

猜你喜欢

热点阅读