• python基础03——用户交互&运算符


    用户交互&运算符

    一 、程序与用户交互

    什么是与用户交互

    用户交互就是人往计算机中input/输入数据,计算机print/输出结果

    交互的本质就是输入、输出

    在Python3中,input会将用户输入的所有内容都存成str类型

    在python2中,raw_input():用法与python3的input一模一样,input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类

    int只能将纯数字的字符串转成整型

    什么是格式化输出?

    把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出

    为什么要格式化输出?

    我们经常会输出具有某种固定格式的内容,比如:'亲爱的xxx你好!你xxx月的话费是xxx,余额是xxx‘,我们需要做的就是将xxx替换为具体的内容

    如何格式化输出?

    这就用到了占位符,如:%s(所有类型值通用)、%d:

    1、方法一: %

    值按照位置与%s一一对应,少一个不行,多一个也不行

    res="my name is %s my age is %s" %('lucky',"18")
    res="my name is %s my age is %s" %("18",'lucky')
    res="my name is %s" %"lucky"
    print(res)

    以字典的形式传值,打破位置的限制

    res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'lucky'}
    print(res)

    %s可以接收任意类型

    print('my age is %s' %18)
    print('my age is %s' %[1,23])
    print('my age is %s' %{'a':333})
    print('my age is %d' %18) # %d只能接收int
    print('my age is %d' %"18")

    2、方法二:str.format             (兼容性好,在python2.6版本时候推出,所以兼容python2和python3,推荐使用

    按照位置传值
    res='我的名字是 {} 我的年龄是 {}'.format('egon',18)
    print(res)

    res='我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('egon',18)
    print(res)

    打破位置的限制,按照key=value传值   
    res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name='egon')
    print(res)

    四舍五入

    print('{salary:.3f}'.format(salary=3.1415926))                      #3.142    精确到小数点后三位

    3、方法三:f           (在python3.5以后推出,最简单)

    x = input('your name: ')
    y = input('your age: ')
    res = f'我的名字是{x} 我的年龄是{y}'
    print(res)

    # f 新用法:{}内的字符串可以被当做表达式运行

    res = f'{10+3}'

    print(res)

    f'{print("aaa")}'            #执行print命令,打印出aaa

    填充与格式化

    # 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]

    # *<10:左对齐,总共10个字符,不够的用*号填充

    print('{0:*<10}'.format('开始执行'))                                                            # 开始执行******

    # *>10:右对齐,总共10个字符,不够的用*号填充

    print('{0:*>10}'.format('开始执行'))                                                            # ******开始执行

    # *^10:居中显示,总共10个字符,不够的用*号填充

    print('{0:*^10}'.format('开始执行'))                                                            # ***开始执行***

    精度与进制

    print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124

    print('{0:b}'.format(123)) # 转成二进制,结果为:1111011

    print('{0:o}'.format(9)) # 转成八进制,结果为:11

    print('{0:x}'.format(15)) # 转成十六进制,结果为:f

    print('{0:,}'.format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931

    运算符

    1、算数运算符
    print(10 + 3.1)
    print(10 + 3)
    print(10 / 3)                                                 # 结果带小数
    print(10 // 3)                                                # 只保留整数部分
    print(10 % 3)                                              # 取模、取余数
    print(10 ** 3)                                              # 取模、取余数

     

    2、比较运算符: >、>=、<、<=、==、!=

    print(10 > 3)
    print(10 == 10)

    print(10 >= 10)
    print(10 >= 3)

    name=input('your name: ')
    print(name == 'egon')


    3、赋值运算符

    3.1 =:变量的赋值 

          取模运算:求两个数相除的余数

          x =10%3

    3.2 增量赋值:

    age = 18
    age += 1                                                   # age=age + 1
    print(age)

    age*=3
    age/=3
    age%=3
    age**=3                                                    # age=age**3

    3.3 链式赋值
    x=10
    y=x
    z=y
    z = y = x = 10                                           # 链式赋值
    print(x, y, z)
    print(id(x), id(y), id(z))

    3.4 交叉赋值

    m=10
    n=20
    print(m,n)
    交换值
    temp=m
    m=n
    n=temp
    print(m,n)

    m,n=n,m                                                  # 交叉赋值
    print(m,n)

    3.5 解压赋值

    salaries=[111,222,333,444,555]

    把五个月的工资取出来分别赋值给不同的变量名

    mon0=salaries[0]

    mon1=salaries[1]

    mon2=salaries[2]

    mon3=salaries[3]

    mon4=salaries[4]

    # 解压赋值
    mon0,mon1,mon2,mon3,mon4=salaries
    print(mon0)
    print(mon1)
    print(mon2)
    print(mon3)
    print(mon4)

    mon0,mon1,mon2,mon3=salaries                                                              # 对应的变量名少一个不行
    mon0,mon1,mon2,mon3,mon4,mon5=salaries                                          # 对应的变量名多一个也不行

    引入*,可以帮助我们取两头的值,无法取中间的值


    # 取前三个值
    x,y,z,*_=salaries=[111,222,333,444,555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_
    print(x,y,z)
    print(_)

    # 取后三个值

    *_,x,y,z=salaries=[111,222,333,444,555]
    print(x,y,z)

    x,*_,y,z=salaries=[111,222,333,444,555]
    print(x,y,z)

    salaries=[111,222,333,444,555]
    _,*middle,_=salaries
    print(middle)

    # 解压字典默认解压出来的是字典的key
    x,y,z=dic={'a':1,'b':2,'c':3}

    print(x,y,z)

  • 相关阅读:
    OpenGL, Net 2005, error C2381: 'exit' : redefinition; __declspec(noreturn) differs
    24点游戏
    一个3*3的格子,给定n>=10, 将[1,n]中的数填入方格中,使得相邻方格的数的和为质数
    最大子矩阵问题 PKU 1050
    12年9月12日
    再谈MSDN Library For Visual Studio 2010
    漫谈.NET开发中的字符串编码
    《.NET 4.0网络开发入门之旅》4:与Socket的第一次“约会”
    “.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(下)
    C#之int挑战Java之Integer
  • 原文地址:https://www.cnblogs.com/lucky-cat233/p/12421862.html
Copyright © 2020-2023  润新知