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:大量数据,且是关联性比较强的数据
  • 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')
posted @ 2020-03-20 22:55  Jason857  阅读(114)  评论(0编辑  收藏  举报