day05

1.造数函数

  1. range()函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。list() 函数是对象迭代器,可以把range()回的可迭代对象转为一个列表,返回的变量类型为列表。
  2. range(3) -->[0,1,2]
  3. 函数语法
    • range(stop)
    • range(start, stop,[step])
  4. 参数说明:
    • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
    • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
    • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

当出现这种情况range(2,-1)即start参数比stop参数要大的情况,需要将step参数调整为负数即可反向打印。如:print(list(range(2,-1,-1)))。这个程序执行的结果为:

运行结果图示

2.练习

  1. 随机生成20以内加减法的程序
import random
n = 21
number = 1
while number < n:
    a = random.choice(list(range(n)))
    b = random.choice(list(range(n)))
    mark = random.choice(['+', '-'])
    if a > b :
        print(a, mark, b, '=')
    else:
        print(b, mark, a, '=')
    result = input("请输入正确答案")
    if result.isdigit():
        result = int(result)
        if mark == '+':
            if result == a+b:
                print("回答正确")
            else:
                print("回答错误,正确答案为%s"%(a+b))
        else:
            if a > b:
                if result == a-b:
                    print("回答正确")
                else:
                    print("回答错误,正确答案为%s" % (a - b))
            else:
                if result == b - a:
                    print("回答正确")
                else:
                    print("回答错误,正确答案为%s" % (b - a))
    else:
        number = number - 1
        print()
        print("头给你敲个包")
        print()
    number = number + 1
  1. 斗地主发牌游戏
    1. 生成54张牌,放在列表中
    2. 洗牌(列表中元素乱序)
    3. 取牌(每个人取17张,剩3张底牌)

知识点:
1. 乱序。random.shuffle(L)
2. 列表切片

import random
pai = []
k = ['J','Q','K']
taoshe = ['\u2660','\u2666','\u2663','\u2665']
for n in range(4):
    pai.append("%sA"%taoshe[n])
    for i in range(1,10):
        pai.append("%s%s"%(taoshe[n],(i+1)))
    for i in range(3):
        pai.append("%s%s"%(taoshe[n],(k[int(i)])))
pai.append("大王")
pai.append("小王")

random.shuffle(pai)

p1 = pai[0:17]
p2 = pai[17:34]
p3 = pai[34:51]
card = pai[51:]

print(p1)
print(p2)
print(p3)
print(card)

3.冒泡排序

  1. 冒泡排序(Buble Sort):是一种计算机科学领域的较简单的排序算法。他重复的走访要排序的元素列,依次比较两个相邻的元素,一层一层的将较大的元素往后移动,其现象和气泡在上升过程中慢慢变大类似,故称为冒泡排序

  2. 算法思想:从第一个和第二个开始比较,如果第一个比第二个大,则交换位置,然后比较第二个和第三个,逐渐往后。

    经过第一轮最大的元素已经排到最后,所以重复上诉操作的话第二大的则会排到倒数第二的位置。

    经过上述操作n-1次即可完成排序,因为最后一层只有一个元素,所以不需要比较

python元素的互换

python中可以通过:`a,b = b,a`来实现元素的互换,不需要引入第三方元素

arr = [56,34,92,23,7,23,2,5,2,5]
for n in range(len(arr)-1):
    for i in range(len(arr)-1-n):
        if arr[i] > arr[i+1]:
            arr[i],arr[i+1] = arr[i+1],arr[i]
print(arr)
  1. 分析:冒泡排序是一种简单直接暴力的排序算法,因为每一轮比较可能多个元素移动位置,而元素位置的互换是需要消耗资源的,所以这是一种偏慢的排序算法,仅适合用于对于含有较少元素的数列进行排序。

    稳定性:属于稳定排序。

    比较性:比较排序。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇