zoukankan      html  css  js  c++  java
  • python基础 day3 基础数据类型、for循环

    1.基础数据类型

    整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set).

    • int:数字:主要用于运算。1 ,2,3...
    • bool:判断真假:True, False.
    • str:简单少量的储存数据,并进行相应的操作。name = 'alex',
    • tuple:只读,不能更改。(1,'alex')
    • list:大量有序数据,[1,'ses',True,[1,2,3],{'name':'jinxin'}]
    • dict:大量数据,且是关联性比较强的数据 {'name':'jinxin','age':18,'name_list':['张三','李四']}
    • set:交集、并集、差集

    int 主要用于运算

    • 二进制转化为十进制
    # 0001 1010转化为十进制
    b = 1 * 2**4 + 1 * 2**3 + 0 * 2**2 + 1 * 2**1 + 0 * 2**0
    print(b)
    
    • int
    # int
    # bit_length 有效的二进制的位数
    i = 4
    print(i.bit_length())
    

    数据类型之间的转换

    # int <————> str
    #字符串必须是整数时才能转换成int
    i = 4
    print(str(i))
    i = '4'
    print(int(i))
    
    # str <————> bool
    # 非空即True
    s = ""
    print(bool(s))
    s = "aloha"
    print(bool(s))
    

    例如:

    s1 = input("请输入内容:")
    if s1:	# 这里的s1如果不为空,则为True
        print("输入的内容是:%s"% s1)
    else:
        print("没有输入任何内容")
    

    字符串str的基本操作

    • 索引
    s1 = "my name is 杨森"
    # 字符串从左至右有顺序,下标,索引
    # 对字符串进行索引、切片出来的数据都是字符串类型
    s2 = s1[5]
    print(s2,type(s2))
    
    # 从左至右下标为0 1 2 3 ……
    # 从右至左下标为-1 -2 -3 ……
    s3 = s1[-1]
    print(s3)
    
    • 切片
    s4 = s1[3:7]  # 切片结果不包括下标为7的字符
    print(s4)
    
    s5 = s1[3:]  # 从第3位取到最后
    print(s5)
    
    s6 = s1[:5]  # 从第0位取到第4位
    print(s6)
    
    s7 = s1[1:13:2]  # :2代表步长
    print(s7)
    
    s8 = s1[-1:-9:-1]  # :-1 是倒叙取
    print(s8)
    
    s9 = s1[:]  # 全部取出来
    print(s9)
    
    s10 = s1[::-1]  # 倒叙全取
    print(s10)
    
    • upper() 和lower()

      应用场景:验证码不区分大小写

    s = "YangSen"
    s1 = s.upper()
    print(s1)
    s2 = s1.lower()
    print(s2)
    

    ​ 应用:用户登录系统,验证码不区分大小写

    username = input('请输入用户名:')
    password = input('请输入密码:')
    code = 'FuCk'
    enter_code = input('请输入验证码(不区分大小写):')
    if code.lower() == enter_code.lower():  # 将code 和enter_code都转换成小写
        if username == 'jason' and password == '123':
            print('登录成功')
        else:
            print('账号或密码错误')
    else:
        print('error code')
    
    • startswith()

      判断一个字符串是不是以……为开头

    s = 'jason'
    print(s.startswith('j'))
    print(s.startswith('jas'))
    print(s.startswith('jason'))
    
    • replace()
    msg = '我叫Jason,我今年24,我是个男生。'
    msg1 = msg.replace('我', 'ta')  # 默认全部替换
    msg2 = msg.replace('我', 'ta', 2)  # 从左往右替换2个
    print(msg1)
    print(msg2)
    
    • strip()

      只能删除开头或者结尾的字符(默认为空格或换行符)

    # strip
    msg = '我是jason,我24岁,我是个男生我'
    msg1 = msg.strip('我')
    print(msg)
    print(msg1)
    
    • split() (重要)

      按照指定分隔符分隔一个字符串,并返回一个列表(默认按照空格分隔)

    msg = 'my name is jason'
    msg1 = msg.split()
    msg2 = msg.split('m')
    msg3 = msg.split(' ', 2)  # 按照空格分割,只分出前两个
    print(msg1)
    print(msg2)
    print(msg3)
    
    • join()
    s = 'jason'
    l1 = ['我', '好', '帅']
    s1 = '+'.join(s)
    s2 = '+'.join(l1)  # 如果join()的是列表,列表中只能是字符串,不可以有数字
    print(s1)
    print(s2)
    
    • count()
    s = 'sdlakjfiwejlknvinlijljlksdahjkbvlskdjafklh'
    print(s.count('d'))
    
    • format()

      格式化输出

    # 方法一 format()中必须按照顺序一一对应
    msg = '我叫{},今年{},性别{}'.format('jason', '24', '男')
    print(msg)
    
    # 方法二 重复字符串不需要多次写
    msg = '我叫{0},今年{1},性别{2},我依然叫{0}'.format('jason', '24', '男')
    print(msg)
    
    # 方法三 format()中顺序可以随意
    msg = '我叫{name},今年{age},性别{sex}'.format(age='24', sex='男', name='jason')
    print(msg)
    
    • is 系列
    s = 'jason123'
    print(s.isalnum())  # 判断字符串中是由字母或数字组成
    print(s.isalpha())  # 判断字符串中只由字母组成
    print(s.isdecimal())  # 判断字符串中只由十进制组成
    
    # 应用:
    number = input('请输入您的金额:')
    if number.isdecimal():
        print('您的金额为:%s' % int(number))
    else:
        print('输入有误')
    

    2.for循环

    • 引入
    msg = '世界上最帅的男人:杨森'
    
    # 使用while循环,把字符串里的每一个字符挨个打印出来
    num = len(msg)  # 获取可迭代对象的总个数
    index = 0
    while index < num:
        print(msg[index])
        index += 1
    
    • for 循环基本格式
    for 变量 in iterable:
        pass
    
    • 示例
    msg = '世界上最帅的男人:杨森'
    for i in msg:
        print(i)
    

    3.练习

    练习1 回家的路

    输入A,则显示走大路回家,然后在让用户进一步选择:

    是选择公交车,还是步行?

    选择公交车,显示10分钟到家,并退出整个程序。

    选择步行,显示20分钟到家,并退出整个程序。

    输入B,则显示走小路回家,并退出整个程序。

    输入C,则显示绕道回家,然后在让用户进一步选择:

    是选择游戏厅玩会,还是网吧?

    选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。

    选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C

    while True:
        way = input('请选择回家的路(A/B/C):')
        if way == 'A':
            print('你选择了大路回家!')
            while True:
                big_road = input('请继续选择交通方式(bus/walk):')
                if big_road == 'bus':
                    print('你选择了公交车,10分钟到家')
                    break
                elif big_road == 'walk':
                    print('你选择了步行,20分钟到家')
                    break
                else:
                    print('输入有误,重新输入')
            break
        elif way == 'B':
            print('你选择了走小路回家,3分钟就到。')
            break
        elif way == 'C':
            print('你选择了先不回家!')
            while True:
                play_choose = input('请选择玩什么(game/papapa):')
                if play_choose == 'game':
                    print('一个半小时到家,爸爸在家,拿棍等你。')
                    break
                elif play_choose == 'papapa':
                    print('两个小时到家,妈妈已做好了战斗准备。')
                    break
                else:
                    print('你只能二选一,重新选!')
        else:
            print('输入有误,重新输入!')
    

    练习2 回文判断

    判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海 ⾃来⽔来⾃海上

    方法一:使用for循环

    # 方法一:使用for循环
    while True:
        msg = input('请输入内容:')
        num = len(msg)
    
        for i in range(num):
            if msg[i] == msg[num - i -1]:
                continue
            else:
                print('no')
                break
        else:
            print('yes')
    

    方法二:字符串倒叙查

    # 方法二:字符串切片
    while True:
        msg = input('请输入内容:')
        if msg == msg[::-1]:
            print("yes")
        else:
            print('no')
    
  • 相关阅读:
    2017ICPC沈阳赛现场赛 L-Tree (dfs)
    2019西北工业大学程序设计创新实践基地春季选拔赛 D(卢卡斯定理)
    Codeforces Round #454 (Div. 1) CodeForces 906D Power Tower (欧拉降幂)
    模板
    洛谷
    模板
    洛谷
    洛谷
    模板
    模板
  • 原文地址:https://www.cnblogs.com/west-yang/p/12535577.html
Copyright © 2011-2022 走看看