swift_简单值 | 元祖 | 流程控制 | 字符串 | 集合

//: Playground - noun: a place where people can play

import Cocoa

var str = "Hello, playground"

//这里先提及下,

//Swift中的属性的定义

//属性名首字母只能是字母,下划线

//首字母后也只能是数字,字母,下划线

/****************************************常量与变量**/

/**************常量的定义*/

//语法上就是使用let关键字

//let 124t :Int

let a2_d:Int

let stuName: String

stuName = "张三"

//stuName = "Jason"

let stuName2 = "Tom"

//stuName2 = "Sky"

/*

特点:

1、常量,value值只可以指定一次

2、常量属性可以先定义,再赋值。需要注意的是,要想先定义,再赋值,那么在定义的时候,就必须给出属性的数据类型,后面就可再赋值,这是语法上的规范

3、常量可以在定义这个常量属性的同时给它附一个值

4、也可以在定义的时候指定这个常量属性的具体数据类型,同时赋值都可以

等等.....

*/

/**************变量的定义*/

//使用var关键字来进行变量的定义

//定义一个变量属性,不指定数据类型,在定义的同时赋初始值

var stuScore = 96

//在变量上,value值是一直可以改变的

stuScore = 66

stuScore = 36

//定义一个变量属性,同时指定具体数据类型,先定义,再赋值

var status: Bool

status = false

status = true

//定义一个变量属性,先定义,再赋值

//注意,这么去写语法上是错误的

/*

var facility

facility = "sdasd"

*/

/*

特点和注意项和常量是一样的

*/

/************************************** 元祖(tuple) ****/

/***************使用let关键字定义元祖****/

/*

语法:

let tupleName = (element1,element2,element3,...)

*/

//定义一个元祖,元祖中保存多个<!!数据类型一样!!>的元素

let score = (36,58,79,80)

//访问元祖score

//通过语法tupleName.intIndex

score.0

score.1

score.2

score.3

//定义一个元祖,元祖中保存多个<!!数据类型不一样!!>的元素

let nfitStu = ("张三",19,"男",true)

//访问元祖nfitStu

//通过语法tupleName.intIndex

nfitStu.0

nfitStu.1

//定义元祖不是定义常量

//以下代码语法上严重出错

/*

let lash: Int

lash = (1,2,3)

*/

//记住语法:

//      let/var tupleName = (element1,element2,...)

//定义一个元祖,元祖中的每个元素都起一个别名

let Tom = (name: "Tom", age :21, sex :"男")

//访问元祖Tom

//在定义元祖时,元祖的每个元素都起好别名

//通过语法tupleName.elementName

Tom.name

Tom.age

Tom.sex

//定义一个元祖,可以起别名,也可以不起别名

let Jason = ("Jason",age :15,sex :"男","爬山")

//访问元祖Jason

Jason.0

Jason.1

Jason.sex

Jason.3

//当元祖中有别名的元素,也有无别名的元素

//访问元祖元素时,即可通过元祖元素索引访问

//也可通过元祖元素别名来访问

//定义一个元祖,元祖中的元素并不是都起别名,而是指定元素的数据类型

let lisiStu = (String :"lisi",Int :21,String :"男")

//这种情况下,很容易就会被弄混

//因为元祖中的元素有2个String类型的

//在访问的时候,当访问到String类型时,

//就只会访问到第一个String类型的元素

//这种情况下,就只能通过元祖元素索引来访问第二个在元祖

//中String类型的元祖元素

lisiStu.String

lisiStu.Int

lisiStu.2

/***************使用var关键字定义元祖****/

var me = ("张三",19,"男")

me.0

//使用var关键字定义元祖

//元祖中的元素是可以一直被改变的

me.0 = "李四"

me.0

me.1

me.1 = 21

me.2 = "妖"

me.0 = "Tom"

me.0

/*          以上都是定义元祖的同时在元祖中给每个元组指定value值*/

//元祖先定义,在赋值

let Jack :(name :String,age :Int,sex :String) = ("jack",12,"魔")

/*

其他特点和let关键字是一样的

区别就只是

let关键字定义定义的元祖的元素value值只可以接受一次

var关键字定义的元祖的元素value之可以一直被改变

元祖定义语法

1> let/var tupleName = (element1,element2,element_N)

2> let/var tupleName = (type1Element, type2Element, N)

3> let/var tupleName = (elementName1: value, elementName2:value,..N)

4> let/var tupleName = (type1: value, type2: value,...N)

5> let/var tupleName: (type1,type2) = (type1Value, type2Value)

6> let/var tupleName: (elementName1 :type, elementName2 :type) = (elmentName1_value, elmentName2_value)

7> let/var tupleName: (type1,type2) = (elementName1: value, elementName2: value)

(语法7,由于在定义元祖时只指定了元素类型,后面赋值时才给定的元素别名,所以访问时也只能通过索引来访问)

(语法1> 2> 3> 4>可以混搭)

*/

/**************************** swift中的字符串 ******/

//语法上也是用let/var关键字

//let是常态属性,var是可变属性

/*********************** 定义属性的3种语法  */

//定义第一个字符串

//定义的同时赋值,但不指定具体数据类型

let str1 = "abcdefghij"

//定义第二个字符串

//定义的同时赋值,指定具体的数据类型

let str2 :String = "Hello World"

//定义第三个字符串

//先定义,再赋值

//注意,在定义该属性时就必须给出数据类型

let str3 :String

str3 = "张三"

//言归正传,回到String类型[字符串的练习]

//定义字符串str4

let str4 :String

str4 = "Hello"

//定义字符串str5

let str5 = " World!"

//在Swift中的字符串是可以拼接在一起的

//语法上使用 + 这个符号

//将str4和str5两个字符串拼接在一起

let str6 :String = str4+str5

//PS swift拼接字符串,不可以使用+=运算符将两个字符串属性拼接,这是错误语法

//使用 += 运算符来将字符串拼接在一起,该属性必须是可变的

//正确语法:

var str7 = "abc"

str7 += "def"

//回想一下,在JavaScript中,没有常量可言,定义的属性都是可变的

//也是使用var关键字来定义

//************************************ swift_String(字符串)中的常用方法

//定义字符串str8

var str8 :String

str8 = "abcdefg"

//获取str8字符串的长度

str8.characters.count

//str8[1]

//若要操作[访问]字符串

/*

注意,这里不是Java,也不是c#

*/

//这里是Swift,所以,以往学习的语言中,访问字符串的方式在这里就用不上了

//在Swift中访问String字符串,

//使用 startIndex[获取字符串的第一个字符的索引下标]

// 和 endIndex[获取字符串的最后一个字符的索引下标]

//配合方法 index[获取字符串中某个字符的索引下标]

//配合方法 subString 来截取字符串中的某一个字符片段

//************************************* 获取字符串字符下标索引

//定义str9字符串

let str9 = "abcdefghijklmnopq"

//获取str9字符串的长度

let str9Lenght :Int = str9.characters.count

//获取str9字符串的首字符的下标索引

let str9StartIndex = str9.startIndex

//获取str9字符串的末尾字符的下标索引

let str9EndIndex = str9.endIndex

//************************************* 截取字符串

//现有一要求,要获取出 fgh 这一个字符片段

//获取f字符所在下标位置

str9.index(str9StartIndex, offsetBy:5)

//获取h字符所在下标位置

str9.index(str9EndIndex, offsetBy: -14)

//调用subString方法来截取出str9字符串中的 fgh 这个字符片段

str9.substring(from :str9.index(str9StartIndex, offsetBy:5)).substring(to: str9.index(str9EndIndex, offsetBy: -14))

//************************************ 字符串大小写装换

//全大写

str9.uppercased()

let str10 :String

str10 = "ABCDEFG"

//全小写

str10.lowercased()

//首字母大写

str10.capitalized

//************************************ 判断是否存在

//是否有该前缀

str10.hasPrefix("AB")

str10.hasPrefix("ab")

//是否有该后缀

str10.hasSuffix("FG")

str10.hasSuffix("fg")

//是否包含

str10.contains("CE")

str10.contains("CD")

//*********************************** 嵌入

let i :Float

i = 5.5

i

let str11 = "abc \(i * 5)"

//在Java中,字符串的嵌入是使用 "+ +"

//swift中,则使用 \( )

//非常方便

//*********************************** 流程控制的练习

//用作判断条件的有

/*

1>

if(){

}else if(){

}else{

}

2>

switch(){

case_1:

case_2:

case_N:

...

default:

}

*/

//用作循环遍历的有

/*

1>

for[旧版本的语法:

for var i=0;i<3;i++{

i++

}

]

新版本新语法:

for in on...off{

}

2>

for-in {

}

3>

while{

}

4>

do-while[swift旧版本的语法]

新版本新语法:

repeat{

}while

*/

//***if - else if - else

//定义一个变量

let str12 = "abcdef"

//判断str12中是否包含cd

if (str12.contains("cd")){

print("str12中包含字符片段‘cd‘")

}else{

print("不包含")

}

//多层判断

if (str12.hasPrefix("cd")){

print("有这个前缀")

}else if(str12.hasSuffix("ef")){

print("有这个后缀")

}else if(str12.contains("ce")){

print("包含‘ce’这个字符片段")

}else{

print("结束")

}

/*

Swift中的多分支条件判断语句,

和Java中一样的,

只要有一个条件分支成立,

if - else if - else语句就结束了

*/

//********************* switch

//定义一个常量属性

let age = 35

/*

错误的语法:

switch age{

case 25:

print("ok")

case 16:

print("ok")

}

在swift中,

switch语句必须要有一个默认分支

*/

//正确语法

switch age{

case 25:

print("ok")

default:

print("没错,就是这个")

}

//*********************** for - in no...off

let arrs = [1,5,8,10,16,20,33]

var max = arrs[0]

for arr in 0...5 {

if arr % 2 != 0 && arr > max{

max = arr

}

}

//升序

var start = 0

for arr in arrs{

if arr > start {

start += arr

}

}

//*********************** for - in

//定义一个数组

let score2 = [90,20,33,67,89,46,70,80]

//循环遍历数组score2

for score in score2 {

print(score)

}

/*

swift中的for-in循环和Java中的for-each循环的用法是一样的

*/

//********************** while

/*

swift的while循环和Java中的while循环也是一样的,没有区别

同样是给一个条件

条件成立,则进入循环

反之,跳过

*/

var n = 3

while n<10 {

n+=1

print(n)

}

n=3

repeat{

print("XXX")

n+=1

}while n<10

/****************** 集合 Array Dictionary Set  *******************/

//************************************ Array类型的集合

let arr2 :Array<Int> = Array<Int>()

var arr3 = [1,2,3,4]

let arr4: Array<Int> = []

arr3[0]

//追加一个元素

arr3.append(5)

//往数组中追加一个数组段在数组的后面

arr3.append(contentsOf: [6,7,8])

arr3

arr3 += [10,11]

arr3.insert(contentsOf: [9,0,9], at: 2)

arr3.remove(at: 9)

arr3

//定义一个Array类型的集合

var arr5 :Array<String>

arr5 = ["张三","李四","王五","赵六"]

arr5.append(contentsOf: ["田七"])

arr5+=["郭八","周九"]

arr5.remove(at: 4)

arr5.remove(at: 3)

arr5.remove(at: 2)

arr5

//插入元素

arr5.insert(contentsOf: ["王五","赵六","田七"], at: 2)

/*

Swift中的这个Array的类型的集合类似Java中的List接口类型的集合

定义集合

操作集合

大致意思是一样的

语法上有些许差异

*/

//******************************************** Dictionary类型的集合

//定义一个Dictionary类型的集合

var dic :Dictionary = ["name":"张三","age":"21","sex":"男"]

dic["name"]

dic["age"]

dic["sex"]

/*

swift中的Dictionary类型的集合提供了两个常用的属性

Keys属性可以拿到Dictionary集合中的所有的键

Values属性可以拿到Dictionary集合中的所有的值

*/

//获取dic集合中的所有的键

for k in dic.keys{

print(k)

}

//获取dic集合中所有的value值

for v in dic.values{

print(v)

}

//循环遍历这个Dictionary集合dic

for (k,v) in dic{

print("Key is \(k), Value is \(v).")

}

/*

完毕

可以很清楚的看到,Swift中的Dictionary类型的集合类似Java中的Map集合

一个key 一个value

一个key 一个value

存数据,有集合,不用怕

Dictionary集合让你存数据方便

Dictionary这个了类型的集合就是键值对的来存取数据的

*/

//******************************************************** Set

//定义一个Set集合

var set1 :Set<String>

set1 = ["张三","李四","王五"]

//获取这个集合的长度

set1.count

//插入东西到一个Set集合中

set1.insert("赵六")

set1

//定义第二个Set集合

var set2 :Set<String>

set2 = ["田七","郭八","周九"]

/*

将第二个Set集合插入到第一个Set集合中

调用两个方法

intersection方法可以理解成为是一个一个缓冲区

所以调用这个方法的时候,数据并没有真正的到第一个Set集合中

而调用union方法时,数据才会真正的到第一个Set集合中

*/

print("预备")

set1.intersection(set2)

//在这之间,可以做些其他的事情

print("数据在缓冲区中")

set1.union(set2)

print("数据已在集合中")

时间: 2024-10-25 11:31:04

swift_简单值 | 元祖 | 流程控制 | 字符串 | 集合的相关文章

基本数据类型(字符串_数字_列表_元祖_字典_集合)

基本数据类型(字符串_数字_列表_元祖_字典_集合) 1.字符串 2.数字 除了布尔类型外,int.long.float和complex都可以使用的运算为:加.减.乘.除.整除.幂运算和取余 3.列表和元组 列表的内容可变,可以包含任意对象,使用中括号表示.元组的内容不可变,可以包含任意对象,使用圆括号表示.元组 1 l = [1, 2, 3, '4', '5'] # 列表 2 l = list((1, 2, 3, '4', '5')) 3 4 t = (1, 2, 3, '4', '5') #

python基础知识之列表、元祖、字典/字符串。

基础知识之列表: 列表用 [  ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除. 常用用法如下 names = ['zhang', 'zhuang', ['alx', 'bob'], 'chen', 'qiang'] print(len(names)) # 获取列表长度 print("aaffaa".count("a")) # 获取a在字符串出现的次数 print(names[1:3]) # 切片 print(names[-1]) # 获取最后

python基础知识之列表、元祖、字典、集合、字符串。

1.可变类型之列表 列表用 [ ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除等 ```python names='zhangyang guyun xiangpeng xuliangwei' names = ['zhang', 'zhuang', 'chen', 'qiang'] name_list = [['zhang', 'zhuang'], ['chen', 'qiang']] list_num = [1, 4, 5, 2, 3, 4, 52, 54] print(l

Python基础之字典、元祖、常用字符串方法、文件读写

字典:键值对方式存在.key value stu={ 'name':'zhangsan', 'gender':'femanl', 'age':17}print(stu) #增加字典值 stu["score"]=87stu.setdefault('dictinct','nanshan') #已经存在就不添加 sstu.update(xx) #把一个字典加入到另外一个字典里面 #删字典值 stu.pop('age')del stu['score'] stu.clear() #清空字典 #查

字符串,列表,元祖,字典,集合的内置方法

一. 数字类型 1.1 整型int   1.用途: 记录年龄\等级\各种号码 2.定义方式: age=18 age=int(18) x=int('123') #只能将纯数字的字符串转换成整型 print(type(x)) print(int(3.7)) #这个小数部分没有了 3.常用操作+内置的方法           ( 赋值\比较\算术) 该类型总结:   存一个值  ;  不可变(1.可变:值变,id不变.可变==不可hash 2.不可变:值变,id就变.不可变==可hash) 判断是否哈

基本数据类型:数字、字符串、列表、元祖、字典、集合

1.数据类型 数字:整型(int)  浮点型(float) 布尔值(bool):True/False 2.字符串 有序(有索引值),可hash name = "seven" name[1] #通过索引值获取对应字母 name[1:3:1] #切片,步长为1 name.find('n') #查找n值的索引 len(name) #name字符串的长度 name.strip() #去掉字符串前后多余空白:括弧内可以加其他的,例如'*',回去掉* name.lstrip() #去左空白 nam

python基础--列表、元祖、字典、集合

列表(List) 1.列表特点 列表是可变的!! list 是一种有序的序列,可以添加.删除其中的元素,并且可以通过下标(索引)访问 数据 2.简单的常用操作 A.通过下表访问元素 1 print(list1[0]) ##正序 2 print(list1[-1]) ##倒序 3 5 list[0] = '123' ##修改指定位置的值 B.切片 1 print(list[1:3]) 3.常用操作: 1 ##append:追加元素 2 list1.append('赵四') 3 4 ##extend

老齐python-基础4(元祖、字典、集合)

1.元祖 元祖的特性结合了字符串和列表 元祖是用圆括号括起来的,其中的元素之间用逗号(英文半角)隔开.元祖中的元素是任意类型的python对象(包括以后自定义的对象) 元祖中的元素不可更改,所以修改列表的方法,在元祖中都会失效.     使用场景: 元祖比列表操作速度快.如果定义了一个值,并且唯一要用他做的是不断的遍历他,那么请使用元祖代替列表. 如果对不需要修改的数据进行"写保护",即该数据是常量,那么此时也要使用元祖.如果必须要改变这些值,则可以转换为列表修改. 元祖可以在字典(又

python 第三章 元祖,字典,集合,while循环

元祖 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 tup = (1,2,3,4,"hello","word") 5 print(type(tup)) 创建空元组 1 tup = () 元组中只包含一个元素时,需要在元素后面添加逗号 1 tup =