何以解忧,唯有学习

何以解忧,唯有学习
0

这个春节过得并不平静,一晃今天都初八了,不知不觉年都过完了!

不知道大家这几天宅在家怎么过的呢?我一直在学 Python。之前都是对照着视频学习,感觉知道了个大概,理解不深入。这几天我在看《跟老齐学 Python 轻松入门》,仔细看一个个小知识点,在交互环境里一个个敲出来,加深印象。

学习令人平静。

希望疫情赶紧过去,希望大家都平平安安 :innocent:

1赞

这是今天学到的 zip 函数。

a = [1,2,3,4,5,6]
b = ['hello', 'world']
c = []
for x,y in zip(a,b):
    c.append(str(x) + ': ' + y)
print(c)

运行结果:
['1: hello', '2: world']

enumerate 函数

a = 'Do you love Spring? Spring is great'
b = a.split()
for i, value in enumerate(b):
    if 'Spring' in value:
        b[i] = 'Fall'
print(b)

运行结果:
['Do', 'you', 'love', 'Fall', 'Fall', 'is', 'great']

while 循环

numbers = [3,6,19,27,66]
even = []
odd = []
while len(numbers)>0:
    number = numbers.pop()
    if number % 2 == 0:
        even.append(number)
    else:
        odd.append(number)
print(even)
print(odd)

运行结果:

[66, 6]
[27, 19, 3]

猜数字游戏

import random
i = 0
while i < 4:
    print('\n*************')
    num = input('请你输入0到9任一个数:')
    xnum = random.randint(0,9) #生成0-9之间的随机数
    x = 3-i
    if int(num) == xnum:
        print('猜对了')
        break
    elif int(num) > xnum:
        print('猜大了!\n哈哈,正确答案是:%s\n你还有%s次机会!'%(xnum, x))
    elif int(num) < xnum:
        print('猜小了!\n哈哈,正确答案是:%s\n你还有%s次机会!' %(xnum, x))
    print('**************')
    i += 1

运行结果:

*************
请你输入0到9任一个数:123
猜大了!
哈哈,正确答案是:4
你还有3次机会!
**************

*************
请你输入0到9任一个数:2
猜大了!
哈哈,正确答案是:1
你还有2次机会!
**************

*************
请你输入0到9任一个数:5
猜小了!
哈哈,正确答案是:7
你还有1次机会!
**************

*************
请你输入0到9任一个数:8
猜大了!
哈哈,正确答案是:5
你还有0次机会!
**************

给你思考一下:

import random
i = 0
while i < 4:
    print('\n*************')
    num = input('请你输入0到9任一个数:')
    xnum = random.randint(0,9) #生成0-9之间的随机数
    x = 3-i
    if int(num) == xnum:
        print('猜对了')
        break
    elif int(num) > xnum:
        print('猜大了!\n哈哈,正确答案是:%s\n你还有%s次机会!'%(xnum, x))
    elif int(num) < xnum:
        print('猜小了!\n哈哈,正确答案是:%s\n你还有%s次机会!' %(xnum, x))
    print('**************')
    i += 1

这段代码如果改成,对代码长度和执行性能分别有什么影响:

import random
i = 4
while i > 0:
    i -= 1
    print('\n*************')
    num = int(input('请你输入0到9任一个数:'))
    xnum = random.randint(0,9) #生成0-9之间的随机数

    if num == xnum:
        print('猜对了')
        break
    if num > xnum:
        print('猜大了!\n哈哈,正确答案是:%s\n你还有%s次机会!'%(xnum, i))
    else:
        print('猜小了!\n哈哈,正确答案是:%s\n你还有%s次机会!' %(xnum, i))
    print('**************')

哈哈,这样写更精简了,执行起来和我那段代码执行是一样的。谢谢指点!

有一些不一样,例如你的代码在每个 if 条件判断的时候都要将字符串变量 num 转换成整数,而我的代码只需要转换一次。还有在个人电脑上的 CPU,根据某个变量是否大于 0 来判断是否进入循环的指令是比判断某个变量是否小于某个整数的指令少的。

好的,学习了背后的道理,再次感谢。