精华内容
下载资源
问答
  • SPSS提示“列表不允许存在字符串变量”的解决方法

    SPSS提示“列表中不允许存在字符串变量”的解决方法

    参考文章:

    (1)SPSS提示“列表中不允许存在字符串变量”的解决方法

    (2)https://www.cnblogs.com/kjkj/p/10484589.html


    备忘一下。


    展开全文
  • 就会弹出窗体说“列表同意存在字符串变量”,能够点击:视图——变量,看到各个变量的类型,发现确实有些变量是字符串类型的。我的数据是以csv格式保存的,但SPSS在导入的时候就可能出现故障。假设直接在“变量...

    今天用SPSS对一些数据进行主成分分析,SPSS 19.0进行主成分分析的方法是:分析——降维——因子分析,可是当导入一些变量的时候。就会弹出窗体说“列表中不同意存在字符串变量”,能够点击:视图——变量,看到各个变量的类型,发现确实有些变量是字符串类型的。我的数据是以csv格式保存的,但SPSS在导入的时候就可能出现故障。假设直接在“变量”这一界面下改动类型。将会导致变量的值发生变化(比如我这里从小数变成了全是0和1)

    正确的处理方法也非常easy。将csv用Excel打开,然后另存为xls格式,再用SPSS导入就能够了。

    2017年2月19日更新:

    这个日志写了非常久,认为自己之前的方法太笨了。并且有可能会有问题,介绍一下为什么直接改动类型会使数值变化的原因:由于在改动变量类型的时候。假设数据有小数,须要选择小数的位数。就在前面说的“变量”界面下,点击类型旁边的省略号。选择成“数值”。然后指定小数位为非0的数字就可以。

    展开全文
  • 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 —— 非零即真 假 False 0 复数型 (complex) ...

    Python基础入门知识点总结传送门

    第一章 认识Python、Python常用集成开发环境PyCharm

    第二章 注释、变量基本使用、变量的命名

    第三章 运算符、判断if语句、while和for循环

    第四章 列表、元组、字典、字符串变量使用、变量进阶

    第五章 函数基础、函数进阶

    第六章 面向对象基础

    第七章 面向对象三大特性、单例设计模式

    第八章 文件读写操作、模块和包、异常

    一、高级变量类型

    • 列表
    • 元组
    • 字典
    • 字符串
    • 公共方法
    • 变量高级

    知识点回顾

    • Python 中数据类型可以分为 数字型非数字型

    • 数字型

      • 整型 (int)
      • 浮点型(float
      • 布尔型(bool
        • True 非 0 数 —— 非零即真
        • False 0
      • 复数型 (complex)
        • 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
    • 非数字型

      • 字符串
      • 列表
      • 元组
      • 字典
    • Python 中,所有 非数字型变量 都支持以下特点:

      1. 都是一个 序列 sequence,也可以理解为 容器
      2. 取值 []
      3. 遍历 for in
      4. 计算长度最大/最小值比较删除
      5. 链接 +重复 *
      6. 切片

    01. 列表

    1.1 列表的定义

    • List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组
    • 专门用于存储 一串 信息
    • 列表用 [] 定义,数据 之间使用 , 分隔
    • 列表的 索引0 开始
      • 索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标

    注意:从列表中取值时,如果 超出索引范围,程序会报错

    name_list = ["zhangsan", "lisi", "wangwu"]
    

    1.2 列表常用操作

    • 常见的操作主要包括:增加删除修改查询
    序号分类关键字 / 函数 / 方法说明
    1增加列表.insert(索引, 数据)在指定位置插入数据
    列表.append(数据)在末尾追加数据
    列表.extend(列表2)将列表2 的数据追加到列表
    2修改列表[索引] = 数据修改指定索引的数据
    3删除del 列表[索引]删除指定索引的数据
    列表.remove[数据]删除第一个出现的指定数据
    列表.pop删除末尾数据(返回值是删除的数据)
    列表.pop(索引)删除指定索引数据 (返回值是删除的数据)
    列表.clear清空列表
    4统计len(列表)列表长度
    列表.count(数据)数据在列表中出现的次数
    5排序列表.sort()升序排序
    列表.sort(reverse=True)降序排序
    列表.reverse()逆序、反转

    del 关键字

    • 使用 del 关键字(delete) 同样可以删除列表中元素
    • del 关键字本质上是用来 将一个变量从内存中删除的
    • 如果使用 del 关键字将变量从内存中删除,后续的代码就不能再使用这个变量了
    del name_list[1]
    

    在日常开发中,要从列表删除数据,建议 使用列表提供的方法

    1.3 循环遍历

    • 遍历 就是 从头到尾 依次列表 中获取数据

      • 循环体内部 针对 每一个元素,执行相同的操作
    • Python 中为了提高列表的遍历效率,专门提供的 迭代 iteration 遍历

    • 使用 for 就能够实现迭代遍历

    # for 循环内部使用的变量 in 列表
    for name in name_list:
    
        循环内部针对列表元素进行操作
        print(name)
    
    

    1.4 应用场景

    • 尽管 Python列表 中可以 存储不同类型的数据
    • 但是在开发中,更多的应用场景是
      1. 列表 存储相同类型的数据
      2. 通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作

    02. 元组

    在 Python 中,因为元组是不可变的元素不能修改

    2.1 元组的定义

    • Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改
      • 元组 表示多个元素组成的序列
      • 元组Python 开发中,有特定的应用场景
    • 用于存储 一串 信息数据 之间使用 , 分隔
    • 元组用 () 定义
    • 元组的 索引0 开始
      • 索引 就是数据在 元组 中的位置编号
    info_tuple = ("zhangsan", 18, 1.75)
    

    创建空元组

    info_tuple = ()
    

    元组中 只包含一个元素 时,需要 在元素后面添加逗号

    info_tuple = (50, )
    

    2.2 循环遍历

    • 取值 就是从 元组 中获取存储在指定位置的数据
    • 遍历 就是 从头到尾 依次元组 中获取数据
    # for 循环内部使用的变量 in 元组
    for item in info:
    
        循环内部针对元组元素进行操作
        print(item)
    
    
    • Python 中,可以使用 for 循环遍历所有非数字型类型的变量:列表元组字典 以及 字符串
    • 提示:在实际开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多

    2.3 应用场景

    • 尽管可以使用 for in 遍历 元组
    • 但是在开发中,更多的应用场景是:
      • 函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据
        • 有关 函数的参数 和 返回值,在后续 函数高级 会一一介绍
      • 格式字符串,格式化字符串后面的 () 本质上就是一个元组
      • 让列表不可以被修改,以保护数据安全
    info = ("zhangsan", 18)
    
    print("%s 的年龄是 %d" % info)
    
    

    元组和列表之间的转换

    • 使用 list 函数可以把元组转换成列表
    list(元组) 
    
    • 使用 tuple 函数可以把列表转换成元组
    tuple(列表)
    

    03. 字典

    3.1 字典的定义

    • dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型
    • 字典同样可以用来 存储多个数据
      • 通常用于存储 描述一个 物体 的相关信息
    • 和列表的区别
      • 列表有序 的对象集合
      • 字典无序 的对象集合
    • 字典用 {} 定义
    • 字典使用 键值对 存储数据,键值对之间使用 , 分隔
      • key 是索引
      • value 是数据
      • 之间使用 : 分隔
      • 键必须是唯一的
      • 可以取任何数据类型,但 只能使用 字符串数字元组
    xiaoming = {"name": "小明",
                "age": 18,
                "gender": True,
                "height": 1.75}
    

    在这里插入图片描述

    3.2 循环遍历

    • 遍历 就是 依次字典 中获取所有键值对
    # for 循环内部使用的 `key 的变量` in 字典
    for k in xiaoming:
    
        print("%s: %s" % (k, xiaoming[k]))
    

    提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多

    3.3 应用场景

    • 尽管可以使用 for in 遍历 字典
    • 但是在开发中,更多的应用场景是:
      • 使用 多个键值对,存储 描述一个 物体 的相关信息 —— 描述更复杂的数据信息
      • 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理
    card_list = [{"name": "张三",
                  "qq": "12345",
                  "phone": "110"},
                 {"name": "李四",
                  "qq": "54321",
                  "phone": "10086"}
                 ]
    
    

    04. 字符串

    4.1 字符串的定义

    • 字符串 就是 一串字符,是编程语言中表示文本的数据类型
    • 在 Python 中可以使用 一对双引号 " 或者 一对单引号 ' 定义一个字符串
      • 虽然可以使用 \" 或者 \' 做字符串的转义,但是在实际开发中:
        • 如果字符串内部需要使用 ",可以使用 ' 定义字符串
        • 如果字符串内部需要使用 ',可以使用 " 定义字符串
    • 可以使用 索引 获取一个字符串中 指定位置的字符,索引计数从 0 开始
    • 也可以使用 for 循环遍历 字符串中每一个字符

    大多数编程语言都是用 " 来定义字符串

    string = "Hello Python"
    
    for c in string:
        print(c)
    
    

    在这里插入图片描述

    4.2 字符串的常用操作

    1) 判断类型 - 9

    方法说明
    string.isspace()如果 string 中只包含空格,则返回 True
    string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True
    string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True
    string.isdecimal()如果 string 只包含数字则返回 True,全角数字
    string.isdigit()如果 string 只包含数字则返回 True,全角数字\u00b2
    string.isnumeric()如果 string 只包含数字则返回 True,全角数字汉字数字
    string.istitle()如果 string 是标题化的(每个单词的首字母大写)则返回 True
    string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True
    string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True

    2) 查找和替换 - 7

    方法说明
    string.startswith(str)检查字符串是否是以 str 开头,是则返回 True
    string.endswith(str)检查字符串是否是以 str 结束,是则返回 True
    string.find(str, start=0, end=len(string))检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1
    string.rfind(str, start=0, end=len(string))类似于 find(),不过是从右边开始查找
    string.index(str, start=0, end=len(string))跟 find() 方法类似,不过如果 str 不在 string 会报错
    string.rindex(str, start=0, end=len(string))类似于 index(),不过是从右边开始
    string.replace(old_str, new_str, num=string.count(old))把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次

    3) 大小写转换 - 5

    方法说明
    string.capitalize()把字符串的第一个字符大写
    string.title()把字符串的每个单词首字母大写
    string.lower()转换 string 中所有大写字符为小写
    string.upper()转换 string 中的小写字母为大写
    string.swapcase()翻转 string 中的大小写

    4) 文本对齐 - 3

    方法说明
    string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
    string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
    string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

    5) 去除空白字符 - 3

    方法说明
    string.lstrip()截掉 string 左边(开始)的空白字符
    string.rstrip()截掉 string 右边(末尾)的空白字符
    string.strip()截掉 string 左右两边的空白字符

    6) 拆分和连接 - 5

    方法说明
    string.partition(str)把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面)
    string.rpartition(str)类似于 partition() 方法,不过是从右边开始查找
    string.split(str="", num)以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格
    string.splitlines()按照行(’\r’, ‘\n’, ‘\r\n’)分隔,返回一个包含各行作为元素的列表
    string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

    4.3 字符串的切片

    • 切片 方法适用于 字符串列表元组
      • 切片 使用 索引值 来限定范围,从一个大的 字符串切出 小的 字符串
      • 列表元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
      • 字典 是一个 无序 的集合,是使用 键值对 保存数据

    在这里插入图片描述

    字符串[开始索引:结束索引:步长]
    

    注意

    1. 指定的区间属于 左闭右开[开始索引, 结束索引) => 开始索引 >= 范围 < 结束索引
      • 起始 位开始,到 结束位的前一位 结束(不包含结束位本身)
    2. 从头开始,开始索引 数字可以省略,冒号不能省略
    3. 到末尾结束,结束索引 数字可以省略,冒号不能省略
    4. 步长默认为 1,如果连续切片,数字和冒号都可以省略

    索引的顺序和倒序

    • 在 Python 中不仅支持 顺序索引,同时还支持 倒序索引
    • 所谓倒序索引就是 从右向左 计算索引
      • 最右边的索引值是 -1,依次递减

    演练需求

      1. 截取从 2 ~ 5 位置 的字符串
      1. 截取从 2 ~ 末尾 的字符串
      1. 截取从 开始 ~ 5 位置 的字符串
      1. 截取完整的字符串
      1. 从开始位置,每隔一个字符截取字符串
      1. 从索引 1 开始,每隔一个取一个
      1. 截取从 2 ~ 末尾 - 1 的字符串
      1. 截取字符串末尾两个字符
      1. 字符串的逆序(面试题)

    答案

    num_str = "0123456789"
    
    # 1. 截取从 2 ~ 5 位置 的字符串
    print(num_str[2:6])
    
    # 2. 截取从 2 ~ `末尾` 的字符串
    print(num_str[2:])
    
    # 3. 截取从 `开始` ~ 5 位置 的字符串
    print(num_str[:6])
    
    # 4. 截取完整的字符串
    print(num_str[:])
    
    # 5. 从开始位置,每隔一个字符截取字符串
    print(num_str[::2])
    
    # 6. 从索引 1 开始,每隔一个取一个
    print(num_str[1::2])
    
    # 倒序切片
    # -1 表示倒数第一个字符
    print(num_str[-1])
    
    # 7. 截取从 2 ~ `末尾 - 1` 的字符串
    print(num_str[2:-1])
    
    # 8. 截取字符串末尾两个字符
    print(num_str[-2:])
    
    # 9. 字符串的逆序(面试题)
    print(num_str[::-1])
    
    

    05. 公共方法

    5.1 Python 内置函数

    Python 包含了以下内置函数:

    函数描述备注
    len(item)计算容器中元素个数
    del(item)删除变量del 有两种方式
    max(item)返回容器中元素最大值如果是字典,只针对 key 比较
    min(item)返回容器中元素最小值如果是字典,只针对 key 比较

    注意

    • 字符串 比较符合以下规则: “0” < “A” < “a”

    5.2 运算符

    运算符Python 表达式结果描述支持的数据类型
    +[1, 2] + [3, 4][1, 2, 3, 4]合并字符串、列表、元组
    *[“Hi!”] * 4[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]重复字符串、列表、元组
    in3 in (1, 2, 3)True元素是否存在字符串、列表、元组、字典
    not in4 not in (1, 2, 3)True元素是否不存在字符串、列表、元组、字典
    > >= == < <=(1, 2, 3) < (2, 2, 3)True元素比较字符串、列表、元组

    注意

    • in 在对 字典 操作时,判断的是 字典的键
    • innot in 被称为 成员运算符

    成员运算符

    成员运算符用于 测试 序列中是否包含指定的 成员

    运算符描述实例
    in如果在指定的序列中找到值返回 True,否则返回 False3 in (1, 2, 3) 返回 True
    not in如果在指定的序列中没有找到值返回 True,否则返回 False3 not in (1, 2, 3) 返回 False

    注意:在对 字典 操作时,判断的是 字典的键

    5.3 完整的 for 循环语法

    • Python 中完整的 for 循环 的语法如下:
    for 变量 in 集合:
        
        循环体代码
    else:
        没有通过 break 退出循环,循环结束后,会执行的代码
    

    应用场景

    • 迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典
    • 需求:要判断 某一个字典中 是否存在 指定的 值
      • 如果 存在,提示并且退出循环
      • 如果 不存在,在 循环整体结束 后,希望 得到一个统一的提示
    students = [
        {"name": "阿土",
         "age": 20,
         "gender": True,
         "height": 1.7,
         "weight": 75.0},
        {"name": "小美",
         "age": 19,
         "gender": False,
         "height": 1.6,
         "weight": 45.0},
    ]
    
    find_name = "阿土"
    
    for stu_dict in students:
    
        print(stu_dict)
    
        # 判断当前遍历的字典中姓名是否为find_name
        if stu_dict["name"] == find_name:
            print("找到了")
    
            # 如果已经找到,直接退出循环,就不需要再对后续的数据进行比较
            break
    
    else:
        print("没有找到")
    
    print("循环结束")
    
    

    二、变量进阶

    • 变量的引用
    • 可变和不可变类型
    • 局部变量和全局变量

    01. 变量的引用

    • 变量 和 数据 都是保存在 内存 中的
    • Python函数 的 参数传递 以及 返回值 都是靠 引用 传递的

    1.1 引用的概念

    Python

    • 变量数据 是分开存储的
    • 数据 保存在内存中的一个位置
    • 变量 中保存着数据在内存中的地址
    • 变量记录数据的地址,就叫做 引用
    • 使用 id() 函数可以查看变量中保存数据所在的 内存地址

    注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用

    • 变量 不再 对之前的数据引用
    • 变量 改为 对新赋值的数据引用

    1.2 函数的参数和返回值的传递

    Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的

    def test(num):
    
        print("-" * 50)
        print("%d 在函数内的内存地址是 %x" % (num, id(num)))
    
        result = 100
    
        print("返回值 %d 在内存中的地址是 %x" % (result, id(result)))
        print("-" * 50)
    
        return  result
    
    a = 10
    print("调用函数前 内存地址是 %x" % id(a))
    
    r = test(a)
    
    print("调用函数后 实参内存地址是 %x" % id(a))
    print("调用函数后 返回值内存地址是 %x" % id(r))
    
    

    02. 可变和不可变类型

    • 不可变类型,内存中的数据不允许被修改:

      • 数字类型 int, bool, float, complex, long(2.x)
      • 字符串 str
      • 元组 tuple
    • 可变类型,内存中的数据可以被修改:

      • 列表 list
      • 字典 dict
    a = 1
    a = "hello"
    a = [1, 2, 3]
    a = [3, 2, 1]
    
    demo_list = [1, 2, 3]
    
    print("定义列表后的内存地址 %d" % id(demo_list))
    
    demo_list.append(999)
    demo_list.pop(0)
    demo_list.remove(2)
    demo_list[0] = 10
    
    print("修改数据后的内存地址 %d" % id(demo_list))
    
    demo_dict = {"name": "小明"}
    
    print("定义字典后的内存地址 %d" % id(demo_dict))
    
    demo_dict["age"] = 18
    demo_dict.pop("name")
    demo_dict["name"] = "老王"
    
    print("修改数据后的内存地址 %d" % id(demo_dict))
    
    

    注意:字典的 key 只能使用不可变类型的数据

    注意

    1. 可变类型的数据变化,是通过 方法 来实现的
    2. 如果给一个可变类型的变量,赋值了一个新的数据,引用会修改
      • 变量 不再 对之前的数据引用
      • 变量 改为 对新赋值的数据引用

    哈希 (hash)

    • Python 中内置有一个名字叫做 hash(o) 的函数
      • 接收一个 不可变类型 的数据作为 参数
      • 返回 结果是一个 整数
    • 哈希 是一种 算法,其作用就是提取数据的 特征码(指纹)
      • 相同的内容 得到 相同的结果
      • 不同的内容 得到 不同的结果
    • Python 中,设置字典的 键值对 时,会首先对 key 进行 hash 已决定如何在内存中保存字典的数据,以方便 后续 对字典的操作:增、删、改、查
      • 键值对的 key 必须是不可变类型数据
      • 键值对的 value 可以是任意类型的数据

    03. 局部变量和全局变量

    • 局部变量 是在 函数内部 定义的变量,只能在函数内部使用
    • 全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所有函数 内部 都可以使用这个变量

    提示:在其他的开发语言中,大多 不推荐使用全局变量 —— 可变范围太大,导致程序不好维护!

    3.1 局部变量

    • 局部变量 是在 函数内部 定义的变量,只能在函数内部使用
    • 函数执行结束后,函数内部的局部变量,会被系统回收
    • 不同的函数,可以定义相同的名字的局部变量,但是 彼此之间 不会产生影响

    局部变量的作用

    • 在函数内部使用,临时 保存 函数内部需要使用的数据
    def demo1():
    
        num = 10
    
        print(num)
    
        num = 20
    
        print("修改后 %d" % num)
    
    
    def demo2():
    
        num = 100
    
        print(num)
    
    demo1()
    demo2()
    
    print("over")
    
    

    局部变量的生命周期

    • 所谓 生命周期 就是变量从 被创建被系统回收 的过程
    • 局部变量函数执行时 才会被创建
    • 函数执行结束后 局部变量 被系统回收
    • 局部变量在生命周期 内,可以用来存储 函数内部临时使用到的数据

    3.2 全局变量

    • 全局变量 是在 函数外部定义 的变量,所有函数内部都可以使用这个变量
    # 定义一个全局变量
    num = 10
    
    
    def demo1():
    
        print(num)
    
    
    def demo2():
    
        print(num)
    
    demo1()
    demo2()
    
    print("over")
    
    

    注意:函数执行时,需要处理变量时 会:

    1. 首先 查找 函数内部 是否存在 指定名称 的局部变量如果有,直接使用
    2. 如果没有,查找 函数外部 是否存在 指定名称 的全局变量如果有,直接使用
    3. 如果还没有,程序报错!

    1) 函数不能直接修改 全局变量的引用

    • 全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所有函数 内部 都可以使用这个变量

    提示:在其他的开发语言中,大多 不推荐使用全局变量 —— 可变范围太大,导致程序不好维护!

    • 在函数内部,可以 通过全局变量的引用获取对应的数据
    • 但是,不允许直接修改全局变量的引用 —— 使用赋值语句修改全局变量的值
    num = 10
    
    
    def demo1():
    
        print("demo1" + "-" * 50)
    
        # 只是定义了一个局部变量,不会修改到全局变量,只是变量名相同而已
        num = 100
        print(num)
    
    
    def demo2():
    
        print("demo2" + "-" * 50)
        print(num)
    
    demo1()
    demo2()
    
    print("over")
    
    

    注意:只是在函数内部定义了一个局部变量而已,只是变量名相同 —— 在函数内部不能直接修改全局变量的值

    2) 在函数内部修改全局变量的值

    • 如果在函数中需要修改全局变量,需要使用 global 进行声明
    num = 10
    
    
    def demo1():
    
        print("demo1" + "-" * 50)
    
        # global 关键字,告诉 Python 解释器 num 是一个全局变量
        global num
        # 只是定义了一个局部变量,不会修改到全局变量,只是变量名相同而已
        num = 100
        print(num)
    
    
    def demo2():
    
        print("demo2" + "-" * 50)
        print(num)
    
    demo1()
    demo2()
    
    print("over")
    
    

    3) 全局变量定义的位置

    • 为了保证所有的函数都能够正确使用到全局变量,应该 将全局变量定义在其他函数的上方
    a = 10
    
    
    def demo():
        print("%d" % a)
        print("%d" % b)
        print("%d" % c)
    
    b = 20
    demo()
    c = 30
    
    

    注意

    • 由于全局变量 c,是在调用函数之后,才定义的,在执行函数时,变量还没有定义,所以程序会报错!

    4) 全局变量命名的建议

    • 为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:
    • 全局变量名前应该增加 g_ 或者 gl_ 的前缀

    创作不易,白嫖不好,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

    Dragon少年 | 文

    如果本篇博客有任何错误,请批评指教,不胜感激 !
    在这里插入图片描述

    展开全文
  • //字符串型:   string   a =  "90";   string   sql =  "select * from biao where o='"   + a +  "'" ;     //数字型   int   i = 10;   sql =  "select * from ...

    现在要查,sex为男,age为20的那些数据,可用如下语句:

    select from student where sex='男' and age=20;

     

    SELECT * FROM Persons WHERE City='Beijing'

    SELECT * FROM Persons WHERE Year>1965

    递增:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

    递减:

     

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

     

     

    //字符串型:

      string a = "90";

       string sql = "select * from biao where o='" + a + "'";

     

       //数字型

        int i = 10;

        sql = "select * from biao where o=" + i + "";

    回到顶部

    一、排序检索数据

    1.排序数据SELECT prod_name FROM Products ORDER BY prod_name(对prod_name列以字母顺序排序数据)

    ORDER BY子句的位置
    在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。如果它不是最后的子句,将会出现错误消息。
    通过非选择列进行排序
    通常,ORDER BY子句中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的。

    2.按多个列排序SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price,prod_name

    重要的是理解在按多个列排序时,排序的顺序完全按规定进行。换句话说,对于上述例子中的输出,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序。

    3.按列位置排序SELECT prod_id,prod_price,prod_name FROM Products ORDER BY 2,3 这个和按多个列排序结果是一样的,无非就是本来的列名称改成了位置序号。

    可以看到,这里的输出与上面的查询相同,不同之处在于ORDER BY子句。SELECT清单中指定的是选择列的相对位置而不是列名。ORDER BY 2表示按SELECT清单中的第二个列prod_name进行排序。ORDER BY 2,3表示先按prod_price,再按prod_name进行排序。
    这一技术的主要好处在于不用重新输入列名。但它也有缺点。首先,不明确给出列名有可能造成错用列名排序。其次,在对SELECT清单进行更改时容易错误地对数据进行排序(忘记对ORDER BY子句做相应的改动)。最后,如果进行排序的列不在SELECT清单中,显然不能使用这项技术。

    4.指定排序方向SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price DESC

    SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price DESC,prod_name

    DESC关键字只应用到直接位于其前面的列名。在上例中,只对prod_price列指定DESC,对prod_name列不指定。因此,prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序。

    警告:在多个列上降序排序
    如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。
    请注意,DESC是DESCENDING的缩写,这两个关键字都可以使用。与DESC相对的是ASC(或ASCENDING),在升序排序时可以指定它。但实际上,ASC没有多大用处,因为升序是默认的(如果既不指定ASC也不指定DESC,则假定为ASC)。
    提示:区分大小写和排序顺序
    在对文本性数据进行排序时,A与a相同吗?a位于B之前,还是Z之后?这些问题不是理论问题,其答案取决于数据库的设置方式。
    在字典(dictionary)排序顺序中,A被视为与a相同,这是大多数数据库管理系统的默认行为。但是,许多DBMS允许数据库管理员在需要时改变这种行为(如果你的数据库包含大量外语字符,可能必须这样做)。
    这里的关键问题是,如果确实需要改变这种排序顺序,用简单的ORDER BY子句可能做不到。你必须请求数据库管理员的帮助。

    回到顶部

    二、过滤数据

    1.where语句SELECT prod_name,prod_price FROM Products WHERE prod_price=3.49

    警告:WHERE子句的位置
    在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。例如:SELECT prod_name,prod_price FROM Products WHERE prod_price=3.49 ORDER BY prod_name ASC

     

    2.检查单个值:SELECT prod_name,prod_price FROM Products WHERE prod_price < 0

    3.不匹配检查:SELECT vend_id,prod_name FROM Products WHERE vend_id <>'DLL01'

    4.范围值检查:SELECT prod_name,prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10

    5.空值检查: SELECT cust_name FROM customers WHERE cust_email IS NULL

    回到顶部

    三、高级数据过滤 

    1.AND操作符SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id='DLL01' AND prod_price <=4

    此SQL语句检索由供应商DLL01制造且价格小于等于4美元的所有产品的名称和价格。这条SELECT语句中的WHERE子句包含两个条件,用AND关键字联结在一起。AND指示DBMS只返回满足所有给定条件的行。如果某个产品由供应商DLL01制造,但价格高于4美元,则不检索它。

    AND
    用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
    这个例子只包含一个AND子句,因此最多有两个过滤条件。可以增加多个过滤条件,每个条件间都要使用AND关键字。
    说明:没有ORDER BY子句
    为了节省空间,也为了减少你的输入,我在很多例子里省略了ORDER BY子句。因此,你的输出完全有可能与书上的输出不一致。虽然返回行的数量总是对的,但它们的顺序可能不同。当然,如果你愿意也可以加上一个ORDER BY子句,它应该放在WHERE子句之后。 
    2.OR操作符SELECT vend_id,prod_price,prod_name FROM Products WHERE vend_id='DLL01' OR vend_id='BRS01'

    此SQL语句检索由任一个指定供应商制造的所有产品的产品名和价格。OR操作符告诉DBMS匹配任一条件而不是同时匹配两个条件。 

    3.求值顺序(AND OR)

    输入:

    SELECT prod_name, prod_price FROM Products 

    WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price >= 10

    输出:

    问题:请看上面的结果。返回的行中有4行价格小于10美元,显然,返回的行未按预期的进行过滤。为什么会这样呢?原因在于求值的顺序。SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。当SQL看到上述WHERE子句时,它理解为:由供应商BRS01制造的价格为10美元以上的所有产品,以及由供应商DLL01制造的所有产品,而不管其价格如何。换句话说,由于AND在求值过程中优先级更高,操作符被错误地组合了。

    解决方法:

    SELECT prod_name, prod_price FROM Products 

    WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10

    其实只要用括号括起来就好了

    提示:在WHERE子句中使用圆括号
    任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认求值顺序,即使它确实如你希望的那样。使用圆括号没有什么坏处,它能消除歧义。

    4.IN操作符

    输入:

    SELECT vend_id,prod_name,prod_price FROM Products
    WHERE vend_id IN ('DLL01','BRS01')
    ORDER BY prod_name

    输出:

    为什么要使用IN操作符?其优点为:

    • 在有很多合法选项时,IN操作符的语法更清楚,更直观。
    • 在与其他AND和OR操作符组合使用IN时,求值顺序更容易管理。
    • IN操作符一般比一组OR操作符执行得更快(在上面这个合法选项很少的例子中,你看不出性能差异)。
    • IN的最大优点是可以包含其他SELECT语句,能够更动态地建立WHERE子句。第11课会对此进行详细介绍。

    IN
    WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。

    5.NOT操作符

    SELECT prod_name FROM Products
    WHERE NOT vend_id = 'DLL01'
    ORDER BY prod_name;

    为什么使用NOT?对于这里的这种简单的WHERE子句,使用NOT确实没有什么优势。但在更复杂的子句中,NOT是非常有用的。例如,在与IN操作符联合使用时,NOT可以非常简单地找出与条件列表不匹配的行。

     

    展开全文
  • C语言中,为什么字符串可以赋值给字符指针变量

    万次阅读 多人点赞 2018-08-15 11:59:11
    C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5'; p=&amp;a; //显然是正确的, p="abcd"; //但为什么也可以这样赋值?? 问:一直理解了为什么可以将字串常量赋值给字符指针变量,请...
  • C语言中,为什么字符串可以赋值给字符指针变量 本文是通过几篇转帖的文章整理而成的,内容稍有修改: 一、 C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5'; p=&a; //显然是正确的, p="abcd"; //...
  • c++字符串与c字符串

    千次阅读 多人点赞 2019-05-27 19:32:26
    字符串字面量3.C++ std::string 类3.1 C风格字符串的优势和劣势3.2 使用string类3.2.1 std::string 字面量3.2.2 c++字符串的数值转换(1)字符串转数值(2)数值转字符串3.2.3 常用字符串函数3.2.4 原始字符串字面量 ...
  • 字符串和数字

    千次阅读 2020-10-23 09:26:16
    然而,许多程序问题需要使用更小的数据单位来解决,比方说字符串和数字。 在这一章中,我们将查看几个用来操作字符串和数字的 shell 功能。shell 提供了各种执行字符串操作的参数展开功能。 除了算术展开(在第七...
  • python 字符串

    万次阅读 2018-11-09 16:03:18
    创建字符串很简单,只要为变量分配一个值即可。例如: var1 = 'Hello World!' var2 = "Runoob" Python 访问字符串中的值 Python 支持单字符类型,单字符在 Python 中也是作为一个字符串使用。 ...
  • python字符串字符串处理函数及字符串相关操作

    万次阅读 多人点赞 2014-04-12 23:23:25
    http://blog.csdn.net/pipisorry/article/details/42085723字符串介绍python字符串表示Python除处理数字外还可以处理字符串字符串用单撇号或双撇号包裹:&gt;&gt;&gt; 'spam eggs' 'spam eggs' &...
  • Python数据类型详解 随笔记录所的所学,此博客为我记录文章所用,...字符串是最常用的数据类型之一,它用来表示一串可变的字符。 字符串可以使用双引号或者单引号将字符包含起来 如果字符串中本来就含有单引号或者
  • 包括:字符串(普通字符串和unicode字符串)、列表、和元组类型。 因为这些类型其实都是由一些成员共同组成的一个序列整体,所以把它们统称为序列,比如说一个字符串是由一些字符(尽管Python并没有显式的定义字符...
  • Python笔记(7) 字符串

    万次阅读 2019-08-24 09:16:57
    String 数据类型、访问和更新、转义字符、运算符、格式化、三引号、Unicode 字符串、内建函数
  • python字符串操作

    千次阅读 2013-07-22 21:17:32
    字符串序列用于表示和存储文本,python中字符串可变的,一旦声明,能改变 通常由单引号(' ),双引号(" ),三引号(''' """)包围 其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件...
  • PHP学习笔记-字符串操作1

    万次阅读 2016-03-28 22:17:00
    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/50997095 本文出自:【顾林海的博客】 ...字符串简介字符串是指由零个或多个字符构成的一个集合,这里所说的字符主要包含以下几种类型
  • 三、格式化字符串漏洞 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1.2 格式化字符串漏洞的通常分类是“通道问题”。如果二类不同的...
  • String 字符串处理函数 - strpos查找一个字符串第一次出现的位置 [strpos查找一个字符串第一次出现的位置 - 文档] http://www.php.net/manual/zh/function.strpos.php [PHP - 关键词] php
  • python之字符串

    千次阅读 2018-02-08 13:18:31
    Python 字符串字符串是 Python 中最常用的数据类型。...Python访问字符串中的值Python支持单字符类型,单字符也在Python也是作为一个字符串使用。Python访问子字符串,可以使用方括号来截取字符串,...
  • 字符串 in Python

    千次阅读 2019-04-09 09:52:34
    字符串 介绍 本节内容将介绍在 Python 里处理字符串的基本概念,以及正则表达式的使用,以及介绍几种常见的字符串处理算法。...创建字符串很简单,只要为变量分配一个值即可。例如: var1='Hello sh...
  • 字符串数组与字符串指针

    千次阅读 2016-01-04 19:01:43
    最近在学指针,感觉内容繁多,概念不好掌握,除了上自己班的编程课,还... 给字符数组赋值分两种情况,单字符赋值和字符串赋值。 单字符赋值:可通过数组下标方式或指针方式,引用数组元素,进行赋值 //数组下标法
  • Chapter Three : Python 序列之字符串操作详解

    千次阅读 多人点赞 2021-03-13 01:16:52
    字符串常见操作二、列表三、元组四、字典五、集合六、通用操作 一、字符串 字符串几乎是所有编程语言在项目开发过程中,涉及最多的一块内容。大部分项目的运行结果,都需要以文本的形式展示给客户,比如财务系统的...
  • 字符指针与字符串

    千次阅读 多人点赞 2016-10-11 11:33:57
    1.字符指针可以指向一个字符串。 我们可以用字符串常量对字符指针进行初始化。例如,有说明语句: char *str = "This is a string."; 是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即...
  • groovy之字符串

    千次阅读 2017-11-08 14:05:03
    文本文字以字符链的形式表示被称作字符串。脚本语言在字符串处理方面比主流的应用程序开发语言做的更好。Groovy就提供了许多附加的特性。在Groovy中有两种风格的字符串:String(java.lang.String)和GString...
  • python字符串

    千次阅读 2019-04-20 22:58:43
    在python中引号包括的都是字符串包含“”或‘’ “this is a string” ‘this is also a string'’ 这种灵活性可以让我们可以在引号中包含t双引号或单引号 str() 这里还有一个前面遗忘的就是str()方法 去除...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 176,118
精华内容 70,447
关键字:

列表不允许出现字符串变量