第一个Swift程序

第一个Swift程序

print("Hello, world!")
//默认情况下printf()函数输出后会自动换行,如果不希望换行,可以通过指定terminator参数设定自己的是否换行
print("Hello, world!",terminator: "")

变量和常量

let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."//转译字符用法
let fruitSummary = "I have \(apples + oranges) pieces of fruit."

元组

用一个变量或一个常量保存多项信息

let stu: (id: Int, name: String,gender: Bool,age: Int) = (1001,"王大锤",true,23
)
let (_,j, _, k) = stu //下划线表示不要()省略和忽略元组的第一项和第三项
//用元组交换两个变量的值
var x = 5 , y = 10
(x,y) = (y,x)

运算符

// 算数运算符 + - *    / %
//关系运算符 == != > >= < <=
//短路运算符 && ||
字符串的连接
var string1 = "hello"
var string2 = "world"
string1 = string1 + " " + string2
三元条件运算符
//let a = 5 , b = 10
//let c = a < b ? a : b

分支结构

游戏举例说明switch case

func name(a:Int)->String{
    var msg: String
    
    switch a{
        
    case 1:
        msg="石头"
    case 2:
        msg="剪刀"
    case 3:
        msg="布"
        
    default:
        msg="输入错误"
    }
    return msg
}
func compare(a:Int,b:Int)->(String,Int,Int){
    var msg1: String
    var humanWin: Int = 0
    var win = 0
    if a==b{
        msg1="平局"
        win = 0
        humanWin = 0
    }
    else if  a==1&&b==2 || a==2&&b==3 || a==3&&b==1{
        msg1 = "你赢了"
        win = 0
        humanWin = 1
    }
    else{
        msg1 = "电脑赢了"
        win = 1
        humanWin = 0
    }
    return (msg1,humanWin,win)
    
}

if else 说明

//计算某年的某个月有多少天
//
print("请输入年份:",terminator: " ")

let year = inputInt()
print("请输入月份",terminator: " ")
let month = inputInt()
let day: Int
if year > 0 && month>=1 && month<=12{
    if month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 {
        day = 31
    }
    else if month != 2{
        day = 30
    }
//    else if year % 4 == 0 && year % 100 != 0 || year % 400 == 0 {
//        day = 29
//    }
//    else {
//        day = 28
//    }
    else {day = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? 29 : 28}
    print("day=\(day)")
}
else{
    print("输入错误")
}

循环结构

while 循环--有可能一次都不执行

var i = 0
while i < 10 {
    print("\(i)+\"\"Hello, World!")
    i += 1
}

repeat while 循环自少要执行一次循环体内容

var i = 1
repeat {
    print("\(i).hello,world")
 i += 1
}while i <= 10

for 循环

for _ in 1..<10{//_ 下划线表示实参可以省略
    print("hello,world")
}
for i in 1...10{
    print("\(i).hello,world")
}

数组

//1.创建一个空数组
var array1 = [String]()
var array2:[Int] = []
var array3 = ["hello","world"]
var array4 = [Int](count: 100, repeatedValue: 1)
//修改元素
array3[1...1]=["www"]
print(array3)
//2.向数组中添加元素
array1.append("strawberry")//append追加 insert 插入
array1.append("pear")
array1 += ["pear"]
array1.insert("waxberry", atIndex: 0)
array1.insert("watermelon", atIndex: 2)
array1.insert("lemon", atIndex: array1.count)
print(array1)
//3.从数组中删除元素全是 .remove(xxxx)
array1.removeAll() //元素全部删除完,并回收空间
print(array1)
array1.removeAll(keepCapacity: true)//true只删除元素不会删除空间
array1.removeAtIndex(3)//
array1.removeFirst(100) //删除前100个元素
array1.removeRange(<#T##subRange: Range<Int>##Range<Int>#>)//删除的范围
//4.数组的复制
var array1 = ["hello","world"]
var array2 = array1
    array2[0] = "aaaaaa"
//第二种写法
var array3 = array1[1..<array3.count]
//5.数组的元素合并成新数组(数组的+运算)
var array1
var array2
var array3 = array1 + array2
//6.获取数组元素的个数
var array1 = ["hello","world"]
print(array1.count)
//7.对数组中的元素进行遍历
for index in 0..<array3.count{
    //[]是对数组进行的下表运算(取出指定位置的元素)
    print(array3[index])
    if index == 1{
        array3[index] = "hhh"
    }
}
print(array3)
//只读循环,在循环中不能修改数组中的元素
for str in array3{
    print(str)
}

小游戏总结

分支加循环的应用:

猜值游戏

var thyAnswer: Int
var counter = 0
let answer = Int(arc4random_uniform(100)) + 1
repeat {
    counter += 1
    print("请输入你猜的数字:",terminator:"")
     thyAnswer = inputInt()
    if thyAnswer > answer{
        print("小一点")
    }
    else if thyAnswer < answer{
        print("大一点")
    }
    else {
        print("恭喜你,猜对了,你总共猜了\(counter)次")
    }
}while thyAnswer != answer
if counter > 7 {
    print("你的智商该充值")
}

for循环的应用:

百钱买白鸡游戏 ocr图片识别软件
GET: 穷举法,穷尽所有可能性直到找到正确答案

for x in 0...20{
    for y in 0...33{
        let   z = 100 - x - y
            if   5 * x + 3 * y + z / 3 == 100 && z % 3 == 0{
                print("公鸡:\(x),母鸡:\(y),小鸡:\(z)")
        }
    }
}

分鱼游戏

循环分支语句的练习

var total = 1
var bool  = true
while bool{
    // 用当次循环时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
            bool = true
        }
    }
    if isEnough{
        print(total)
        bool = false
    }
    total += 1
}

数组的应用:提高代码质量

func roll() ->Int{
    return  Int(arc4random_uniform(6))+1
}

//定义一个放整数的数组(6个元素,初始值都为0)
var f = [Int](count: 11, repeatedValue: 0)//var f: [Int]
for _ in 0..<600000{
    let face = roll() + roll()
    f[face - 2] += 1
}
for i in 0..<f.count{
    print("\(i+2)点摇出了\(f[i])次")
}

用图片做出动画效果

//核心代码:
var imageView: UIImageView!
 let screenHeight = self.view.bounds.size.height

        imageView = UIImageView(frame: CGRectMake(0, screenHeight / 2 - 50, 75, 100))
        // imageView.backgroundColor = UIColor.clearColor()
        // imageView.image = UIImage(named: "runner0")
        imageView.animationImages = [
            UIImage(named: "runner0")!,
            UIImage(named: "runner1")!,
            UIImage(named: "runner2")!,
            UIImage(named: "runner3")!,
            UIImage(named: "runner4")!,
            UIImage(named: "runner5")!
        ]
        imageView.animationDuration = 0.6
        self.view.addSubview(imageView)
        imageView.startAnimating()
        timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "runForward", userInfo: nil, repeats: true)
imageView.animationImages = []如果用了这句话那么下面那句话也得用
imageView.startAnimating()//不要这句话程序会报错


    func runForward() {
        var frame = imageView.frame//图片的另一个属性
        frame.origin.x += 12
        imageView.frame = frame//这句话必须写不然图片不会移动的
        if frame.origin.x > self.view.bounds.size.width {
            frame.origin.x = -75
            imageView.frame = frame
        }
    }

剪刀石头布用case 语句写法 加 元组


//剪刀1石头2布3

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

推荐阅读更多精彩内容