Swift的第一周爬坑之路

提笔。难。

难在瞎写对不起自己的学习成果;难在有套路却乏于运用;难在Po文又将提起我人生中的Bug——循环!

落笔。希望生辉。
  以下则是我的学习心得,各位看客轻喷 ...

1.字符串插值

(1). 如上所述,在swift中有了这个字符串插值,我们将更好的插入、取出其值。而在括号里面可以进行同类型的变量(常量)之间的运算
 (2).代码演示:

  let a = 5
  let b = 5
  print("\(a) + \(b) = \(a + b)")
   打印结果为:5 + 5 = 10

(3).评价:第一感觉就是好玩,之后用起来还真是得心应手 😜
 实用性:★★★★★
 易用性:★★★★★
 推荐性:★★★★★

2.元组

(1).元组(tuples)是把多个值组合成一个复合值。元组内的值可以采用不相同类型。
 (2).代码演示:

  let stu = (001, "Xyk_",true,18)
  let stu:(id:Int , name:String , gender:Bool , age:18) = (001, "Xyk_",true,18)
  // 以上就是两种元组的赋值方式

  print(stu.0)
  print(stu.id)
  //两个输出都是进行的元组的第一项内容输出

(3).评价:元组的置换(稍后提示~)将使你在你的Swift代码人生中产生不一样烟火 🌝
 实用性:★★★★★
 易用性:★★★★★
 推荐性:★★★★★

3.分支语句

(1).分支语句,即为多条件分多步执行的以实现不同的功能或方法。而此语句必须是先判断后执行
 (2).代码演示:

if ... (else if ... ) ... else
//省略号处写上该分支的执行条件(必不可少)

switch(表达式) {
      case 值 :
               执行表达式
      .
      .
      .
      case 值 :
               执行表达式
      default:
               执行表达式
}
//其中的值是类似if...else结构中的条件
//执行表达式中强调break 和 continue 
//continue是终止本次循环进入下一个循环,切记是终止不是中止更不是中指 😏
//break 就是终止循环

let a = 5 
let b = 5
let c = a > b ? a : b 
print(c)
打印结果是 5
//三元条件运算:?前面是先决条件。以此为例,像是中文中的发问 —— a大于b吗?
//很明显这里是否定的,所以执行的结果是后面的b的值。
//因此,冒号前后执行的条件判断是前真后假。 

(3).评价:分支语句的运用之处相当多,简单又低调,入门级信心好帮手 🙊
 实用性:★★★★★
 易用性:★★★★
 推荐性:★★★★

3.循环语句——人生中无法抹去的痛 🙄🏼

(1).顾名思义,循环就是重复重复再重复,直到找到答案(条件不再满足)才结束循环
                          ——你开心就好 🌚
 (2)本周循环讲述了 for循环、while循环和repeat ... while循环,而三者之间的差距在于我就在你后面你却不让我执行💀——repeat ... while 先予执行一次再来判断,而while、for则是必须先谈条件再说接下来的事情,好一个霸道总爱上我🌚
  再说Swift中的循环与其他的差别,那一定它只支持自增而舍去了自减,还有就是把do...while变成了repeat...while 😱 
  并且格式也改成了:
    for _ in 1...10
    for _ in 1..<10
    ... ...
 ————WTF?————
(3).代码演示:

for _ in 1...10 {
    print("Hello, world!")
}
//打印十次 Hello, world! 且被默认换行了。也就是在控制台竖着打了10次
// _ 这个符号表示省略的意思,当然你也可以写个乱七八糟的东西上去来代替它。
//但是老师曾说,你要让看你代码的人把膝盖送给你😈

什么?想要横着打?

for _ in 1...10 {
    print("Hello, world!",terminator:" ")
}
//这就打印了十次且两两之间隔着空格的Hello, world! 
//terminator:"这可以添加制表符\t、换行符\n、 空格等等"

(4).评价:当然这样看来循环还是很简单的嘛,那只能是这样看来...这样看来...看来...🌚 循环的博大精深你不入坑怎么知道它害不死你🌚只要是个语法就能和循环用,比如你帅你先打个菱形或者来个完美数运算要不然你算算Craps或者分个鱼?
 然而我的心愿是世界和平 🙏🏼

实用性:★★★★★
  易用性:★★ (我丑人多作怪)
  推荐性:★★★★★

NIYIWEIZHESHIWODACUOLEMEIYOUGAIHUOZHENIYIWEIXUNHUANJIUZHEMEJIESHULE ?

图样图森破
   图样图森破
      图样图森破
         233333
 (5).循环的题有千千万,做不完更背不完,我一位德不高望不重的小神级学长说,只有屌丝才背代码🌚 没错,我以前就是屌丝🙄 但是,从今天起我不愿再做屌丝了 所以在循环部分的最后想和大家说一下我的心得和困苦:
  ①.想必大家和我一样,循环只要一嵌套就懵了。我起初的困苦是拿笔来写写画画以求心里安慰,可是并没有实质性的解决问题。然后执行打点来寻求每一步的变法,这很有用,这很入门。

打点在这里就不提供演示了,各位看客保重,小司机可向老司机求教

②.方法没有搞对,不知道循环从哪里开始。所以从结尾入手,猴子吃桃、99乘法表、分鱼都强有力的解决了。

//猴子每天吃掉比前一天一半还多一个的桃子,最后一天剩下一个,共9天
var sum = 1
for _ in 1...9{
    sum = (sum + 1) * 2
}
print(sum)


//分鱼
var total = 1
while true {
    // 用当次循环时total的值作为鱼的总数
    var fish = total
    // 假设鱼的数量足够五个人分
    var isEnough = true
    // 通过循环模拟五个人分鱼的过程
    for _ in 1...5 {
        // 检查剩下的鱼是否够分
        if (fish - 1) % 5 == 0 {
            fish = (fish - 1) / 5 * 4
        }
        else {
            // 如果鱼不够分就将isEnough赋值为false并提前结束分鱼的循环
            isEnough = false
            break
        }
    }
    // 循环结束后如果isEnough仍然是true就说明当前的鱼足够五个人分就打印total的值并终止循环
    if isEnough {
        print(total)
        break
    }
    total += 1
}

③.打印输出图形这简直是看似简单确实也很简单的一个事情。以菱形为例——别上来就体现自己高超的数学技能,别算横纵,只算横排,数清空白,算好*号;划分菱形为上下两半,找好公式,一算一个准
  ④.我现在最大的困扰就是不知道该如何将理解到的、题意中的重要信息给变换成程序语言,或者说是不知道哪些重点该运用在哪个循环里面,虽然我觉得我上面的总结还是帮助我了很多,但我现在依旧懵,就像这段话一样,在我脑子里重复了很多次还是没能准确的表达我的困苦,所以循环一生伤 😭

4.数组 ——循环劫难后的重生 🙇🏻

(1).所谓数组,就是相同数据类型的元素有序或无序排列的集合(预备,唱:黑板上排列组合/你舍得解开吗 💑 ),然后用编号区分他们的变量或常量的集合。
  (2).代码展示

var myArray1 = [String]()
var myArray2: [String] = []
var myArray3 = ["1", "2", "3", "4", "5"]
var myArray4 = [String](count: 100, repeatedValue: "")
//1. 4种创建方式

print(myArray3.count)
// 2. 获取数组元素个数


for index in 0..<myArray3.count {
    // []是对数组进行下标运算(取出指定位置的元素)
    print(array3[index])
    if index == 1 {
        myArray3[index] = "改改改"
    }
}
// 3. 对数组中的元素进行遍历

所以在数组中又出现了循环还是让人最头疼的for循环,相比于之前的淡出你学习循环,数组加循环的结构还是让人没那么想自杀,而数组的遍历(循环)也有下面几种区别:

//不需要下标直接输出的数组用这个
for num in myArray3 {
    print(num)
}


//需要下标
for i in 0..<myArray3.count{
    print("\(i+1)__\(mathArray[i])")
}


//需要下标又要值,下标是个值,可以放到其他数组里面用
for (index,value) in myArray3.enumerate(){
    print("\(index+1)__\(value)")
}

数组的其他简单操作:

// 4.  向数组中添加元素:

myArray3 += ["strawberry"]
myArray3.append("pear")
//以上两者均是在末尾添加
myArray3.insert("waxberry", atIndex: 0)
myArray3.insert("watermelon", atIndex: 2)
//以上两者在指定位置添加
myArray3.insert("lemon", atIndex: myArray3.count)
//用insert方法在末尾添加
// 5. 从数组中删除元素:

myArray3.removeAtIndex(这里写指定的下标以完成删除指定元素)
myArray3.removeFirst()
myArray3.removeAll()
// 6. 数组的复制:

var myArray5 = array3
myArray5[0] = "6"
var myArray6 = myArray3[1...3]
// 将myArray3的第二个到第四个元素赋给myArray6
// 7.  数组的运算:

let  myArray7 = myArray5 + myArray6
// myArray7呈现的是myArray5完了之后紧接着myArray6的元素

// 8.  数组的排序:

let newArray = array.sort()
print(newArray)
//在新数组中排序
myArray3.sortInPlace()
print(array)
//在原数组语句中排序

在Swift中的方便排序sort()方法后还有两个需要我们牢记的排序的方法——选择排序和冒泡排序

//简单排序的方法:第一趟找第一小的,第二次找第二小的,第三次找第三小的,以此类推...
//(每次从剩下元素中找最小的元素放到对应的位置)
var array = [29, 98, 35, 12, 47, 66, 53, 79]
for i in 0..<array.count - 1 {
    var minIndex = i
    for j in i + 1..<array.count {
        if array[j] < array[minIndex] {
            minIndex = j
        }
    }
    (array[i], array[minIndex]) = (array[minIndex], array[i])
}
print(array)
//打印结果是 :[12, 29, 35, 47, 53, 66, 79, 98]


//冒泡排序:两两比较,前面的元素比后面的元素大就交换位置
//n个元素比较只做n-1的比较
//优化后的排序
var array = [29, 98, 35, 12, 47, 66, 53, 79]
for i in 0..<array.count - 1 {
    var swapped = false
    for j in 0..<array.count - 1 - i {
        if array[j] > array[j + 1] {
            (array[j], array[j + 1]) = (array[j + 1], array[j])
            swapped = true
        }
    }
    if !swapped {
        break
    }
}
//打印结果是 :[12, 29, 35, 47, 53, 66, 79, 98]

Tips:数组的遍历,其执行时从0~元素个数减1。
 (3).评价:数组的加入有助于更好的理解循环,棒 😬
  实用性:★★★★★
  易用性:★★★☆
  推荐性:★★★★

所以,在数组的最后想要和大家探讨一个关于使用循环和数组的组合方法来求的一道题:
  异教徒的站位——15个基督教和15个异教徒同乘一船航行,遇险,要全船人的一半投入海中,并议定30人围成一圈,由第一人数起,挨个报数,每数到第9个人,投海,最后基督教徒全部活了下来。

我们的或者说我的盲区是判断了站位的循环怎么去做,if so , I'll never get the right and esay way to solute the problem I made.
所以我们还换位思考应该是从没有扔满15个人一直重复的循环

var peopleArray = [Bool](count: 30, repeatedValue: true)
var counter = 0 //投海数量
var num = 0  //报数数字
var index = 0 //数组下标
while counter < 15{
//    报数以及投海
    if peopleArray[index]{
        num += 1
        if num == 9{
            peopleArray[index] = false
            counter += 1
            num = 0
        }
    }
    index += 1 //投海了的人就直接加1跳过
//    index %= peopleArray.count
    if index == peopleArray.count{//投海的下一个人就是归0
        index = 0
    }
}

for person in peopleArray{
    print(person ? "教徒 " : "非教徒 ",terminator:"")
}
print("")

//站位
教徒 教徒 教徒 教徒 非教徒 非教徒 非教徒 非教徒 非教徒 教徒 
教徒 非教徒 教徒 教徒 教徒 非教徒 教徒 非教徒 非教徒 教徒 
教徒 非教徒 非教徒 非教徒 教徒 非教徒 非教徒 教徒 教徒 非教徒 

救护车分为两种——一种是有医有医,一种是无医无医,愿天下所有程序猿的能上“有医有医的救护车”。
  至少,我的心里还有诗和远方以及心灵砒霜。
                            ——写在最后

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 这么着还是那么着,这是莎士比亚的问题。 你像我这么个好人,可以这么着,也可以那么着,可偏偏我为什么被葛小姐所抛弃了...
    傻傻的男生阅读 608评论 3 3
  • 那些银杏 那些聚集的影子 它们待在喧闹的城市里 名贵而普通 我的家乡 没有高贵的树 只有杂乱无章的草 长在运河边的...
    立黄昏阅读 664评论 38 40
  • 实际上,人类历史有一个奇怪的规律,王朝的更迭(从草莽、崛起、顶峰、止步、衰弱、灭亡),企业,其实也是这样,无非是这...
    上善若水_75c4阅读 471评论 1 2