zoukankan      html  css  js  c++  java
  • day05-与用户交互与运算符

    一、与用户交互

    1、接收用户的输入

    username = input("请输入您的账号:")   # "egon"
    print(username, type(username))
    请输入您的账号:egon
    egon <class 'str'>
    age = input("请输入的你的年龄: ")  # age="18"
    print(age, type(age))
    age=int(age) # int只能将纯数字的字符串转成整型
    print(age > 16)
    请输入的你的年龄: 18
    18 <class 'str'>
    True
    接收用户的输入也会有些判断,在python3中int只能接收整数剖分,有小数点或者字母特殊字符的话,是不能识别的
    int("12345")
    int("1234.5")
    int("1234abc5")

    ValueError: invalid literal for int() with base 10: '1234.5'


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

    >>> age=input(">>>>>>>>>>>>>>>>>>>>>: ")
    >>>>>>>>>>>>>>>>>>>>>: 18
    >>> age,type(age)
    (18, <type 'int'>)
    >>>
    >>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
    >>>>>>>>>>>>>>>>>>>>>: 1.3
    >>> x,type(x)
    (1.3, <type 'float'>)
    >>>
    >>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
    >>>>>>>>>>>>>>>>>>>>>: [1,2,3]
    >>> x,type(x)
    ([1, 2, 3], <type 'list'>)
    >>>

    这样看起来是比较方便了,不过它方便的对象是开发者,而对使用者也就是用户来说是不友好的,所以python3统一改成了str类型,

    毕竟软件开发出来是为了更好的服务用户的,不可能要求每个用户还来学习下数据类型再使用软件吧?


    2、字符串的格式化输出
    2.1 %
    值按照位置与%s一一对应,少一个不行,多一个也不行

    res="my name is %s my age is %s" %('egon',"18")
    res="my name is %s my age is %s" %("18",'egon')
    res="my name is %s" %"egon"
    # 分别 print(res)
    
    my name is egon my age is 18
    my name is 18 my age is egon
    my name is egon

    %是按照位置来格式化输出的,改变了位置,依旧按照顺序来输出,多个变量用括号,单个变量可以省略括号

    以字典的形式传值,打破位置的限制
    res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'egon'}
    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")

    %这个格式化输出的方式从有python开始就已经有了,python2与python3均可使用


    2.2 str.format:兼容性好
    按照位置传值

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

    打破位置的限制,按照key=value传值

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

    # 了解知识  (学过即可)
    2.4 填充与格式化()
     先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
     *<10:左对齐,总共10个字符,不够的用*号填充
    print('{0:*<10}'.format('开始执行')) # 开始执行******

     *>10:右对齐,总共10个字符,不够的用*号填充
    print('{0:*>10}'.format('开始执行')) # ******开始执行

     *^10:居中显示,总共10个字符,不够的用*号填充
    print('{0:*^10}'.format('开始执行')) # ***开始执行***
    2.5 精度与进制

    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


    2.3 f:python3.5以后才推出

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


    二、运算符

    1、算数运算符
    print(10 + 3.1) # 整数与小数相加
    print(10 + 3)   #整数相加
    print(10 / 3)    # 结果带小数
    print(10 // 3)   # 取模,只保留整数部分
    print(10 % 3)  # 取余数
    print(10 ** 3)  # 10的三次方

    2、比较运算符: >、>=、<、<=、==、!= (大于,大于等于,小于,小于等于,等于,不等于)
    print(10 > 3)
    print(10 == 10)

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

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

    3、赋值运算符
    3.1 =:变量的赋值 


    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)
    a b c

    这上面的基本都是python的语法的规定好了的使用方法,没有什么好解释的,就是这么用,更加方便,代码更加简洁。

    用就完了,不用过深的去想什么为什么!!!

  • 相关阅读:
    第十八章、使用集合
    第十九章、枚举集合
    第十七章、泛型概述
    第十六章、使用索引器
    第十五章、实现属性以访问字段
    第十四章、使用垃圾回收和资源管理
    第十三章、创建接口和定义抽象类
    AtCoder Grand Contest 018 E
    AtCoder Regular Contest 059 F Unhappy Hacking
    Codeforces 464E. The Classic Problem
  • 原文地址:https://www.cnblogs.com/xiao-zang/p/12421080.html
Copyright © 2011-2022 走看看