Swift 第一周 小结

print函数

print("Hello,world")

: 默认情况下print函数输出后会自动换行,如果不希望换行可以通过指定terminator参数设定自己的终止符来替换掉默认的换行符

Naming Constants and Variables (标识符的命名规则)

  1. 字母(Unicode字符)、数字、下划线,数字不能开头
  2. 大小写敏感
  3. 不能使用关键字做标识符
  4. 驼峰标识 - 第一个单词全小写以后每个单词首字母大写
  5. 见名知意
    : var用来定义变量,let用来定义常量
print("请输入圆的半径: ", terminator: "" )
let r = inputDouble()
let perimeter = 2 * M_PI * r
let area = M_PI * r * r
print(String(format: "周长: %.2f", perimeter))
print(String(format: "面积: %.2f", area))

: 正常情况下表示整数首选Int, 表示小数首选Double, 表示字符串首选String, 表示真假首选Bool.

String Interpolation (字符串插值)

print("\\\\(a) + \\\\(b) = \\\\(a + b)")
print("\\\\(a) - \\\\(b) = \\\\(a - b)")
print("\\\\(a) * \\\\(b) = \\\\(a * b)")
print("\\\\(a) / \\\\(b) = \\\\(a / b)")
print("\\\\(a) % \\\\(b) = \\\\(a % b)")

转义字符 - \\n(换行符), \\t(制表符)

print("Hello, World!", terminator: "\\\\n")
print("大家好", terminator: "\\\\t")
print("")

Swift中的运算

: 运算符
-算术运算符: + - * / %
-关系运算符: == != > >= < <=
-短路运算符: && ||

: Swift中加减乘除运算的左右两边类型必须一致

let x: Double = 321.99999
print(x / Double(b))
print(Int(x) / b)

: && - 短路与运算(而且) || - 短路或运算(或者)

let year = 2000
let c1 = year % 4 == 0      // 四年一闰
let c2 = year % 100 != 0    // 百年不闰
let c3 = year % 400 == 0    // 四百年又闰
if (c1 && c2) || c3 {
    print("\\\\(year)年是闰年")
}
else {
    print("\\\\(year)年不是闰年")
}

: 用科学计数法表示小数

y = 1.23e4
print(y)    // 12300.0
y = 1.23e-4
print(y)    // 0.000123

: 忽略不计

y = 0xAp3
print(y)    // 80.0
y = 0x10p-2
print(y)    // 4.0

: 复合赋值运算符

a += b
a -= b
a *= b
a /= b
a %= b
print(a)

: 元组(tuple) - 用一个变量或者一个常量保存多项数据信息的类型

(x, y) = (y, x)      // 用元组交换两个变量的值

: 比较运算符 (关系运算符) 产生bool类型的值要么是true,要么是false
: 三元条件运算符 -- question ? answer1 : answer2 (问号前面是一个产生Bool类型的变量常量或表达式,如果其值为true就取冒号前面的值,如果其值为False则取冒号后面的值)

  • 三元条件运算的?前面一定要加空格!!!
let msg = username == "admin" && password == "123456" ? "登录成功!!!" : "非法用户!!!"

: 可以使用圆括号改变运算顺序

分支语句

: if - else

  • 输入年和月 输出这个月有多少天
print("请输入年和月用空格隔开(例如: 1980 2)")
let year = inputInt()
let month = inputInt()
let day: Int
if month < 1 || month > 12 {
    print("瓜西西的")
    exit(0) // 程序退出不再执行
}
else if month == 2 {
    day = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? 29 : 28
}
else if month == 4 || month == 6 || month == 9 || month == 11 {
    day = 30
}
else {
    day = 31
}
print("\\\\(year)年\\\\(month)月有\\\\(day)天")
  • 分段函数求值
print("x = ", terminator: "")
let x = inputDouble()
let y: Double
if x < -1 {
    y = 2 * x - 5
}
else if x <= 1 {
    y = 3 * x + 7
}
else {
    y = 4 * x - 3
}
print("f(\\\\(x)) = \\\\(y)")

: switch - case 语句

  • 摇色子决定做什么事
let face = Int(arc4random_uniform(6)) + 1
switch face {
case 1:
    print("扮鬼脸")
case 2:
    print("吻对方")
case 3:
    print("真心话")
case 4:
    print("唱一首")
case 5:
    print("听指挥")
case 6:
    print("脱一件")
default:
    print("色子坏了!!!")
}
  • IT从业人员等级评定
print("请输入你的月薪: ", terminator: "")
let salary = inputInt()
if salary >= 0 {
    switch salary {
    case 0:
        print("你是一个无业游民")
    case 1...30000:
        print("你是一个小码畜")
    case 30001...60000:
        print("你是一个小码奴")
    case 60001...100000:
        print("你是一个大码农")
    case 100001...200000:
        print("你是一个光荣的IT民工")
    case 200001...500000:
        print("你是一个优秀的IT工程师")
    case 500001..<10000000:
        print("你是IT精英")
    case 10000000..<100000000:
        print("你是IT大哥, 我服")
    default:
        print("你是头上有光环的IT领袖, 求带")
    }
}
else {
    print("你丫有病!!!")
}

循环语句

: for循环

  • 水仙花数 - 153 = 1^3 + 5^3 + 3^3
func cube(n: Int) -> Int {
    return n * n * n
}
for i in 100...999 {
    let a = i % 10          // 个位
    let b = i / 10 % 10     // 十位
    let c = i / 100         // 百位
    if i == cube(a) + cube(b) + cube(c) {
        print(i)
    }
}
  • 猴子吃桃
var sum = 1
for _ in 0..<9 {
    sum = (sum + 1) * 2
}
print(sum)
  • 求m的n次方(m和n都是正整数)
print("m = ", terminator: "")
let m = inputInt()
print("n = ", terminator: "")
let n = inputInt()
var val = 1.0
for _ in 0..

: while 循环 (有可能一次都不执行)

  • 求阶乘
print("n = ", terminator: "")
let n = inputInt()
var val = 1.0
var i = 2
while i <= n {
    val *= Double(i)
    i += 1
}
print("\\\\(n)! = \\\\(val)")
  • 求1-100之间的偶数的和
var sum = 0
var i = 2
while i <= 100 {
    sum += i
    i += 2
}
print(sum)
  • 用for循环求1-100之间的偶数的和
var sum = 0
for i in 1...100 {
    if i % 2 == 0 {
        sum += i
    }
}
print(sum)

: repeat - while 循环(程序至少执行一次)

var i = 1
repeat {
    print("\\\\(i). Hello, world!")
    i += 1
} while i <= 100

: 分支语句&&循环语句的重要应用

  • Craps赌博游戏
func roll() -> Int {
    return Int(arc4random_uniform(6)) + 1
}
var money = 1000
repeat {
    print("玩家总资产: ¥\\\\(money)元")
    var debt: Int
    repeat {
        print("请下注: ", terminator: "")
        debt = inputInt()
    } while debt <= 0 || debt > money
    var needsGoOn = false
    let firstPoint = roll() + roll()
    print("玩家摇出了\\\\(firstPoint)点")
    switch firstPoint {
    case 7, 11:
        money += debt
        print("玩家胜!!!")
    case 2, 3, 12:
        money -= debt
        print("庄家胜!!!")
    default:
        needsGoOn = true    // 游戏继续
    }
    while needsGoOn {
        let currentPoint = roll() + roll()
        print("玩家摇出了\\\\(currentPoint)点")
        if currentPoint == 7 {
            money -= debt
            print("庄家胜!!!")
            needsGoOn = false
        }
        else if currentPoint == firstPoint {
            money += debt
            print("玩家胜!!!")
            needsGoOn = false
        }
    }       } while money > 0            print("你破产了!!!") 
  • 百钱百鸡 - 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 array = [29, 98, 35, 12, 47, 66, 53, 79]
for i in 0.. array[j + 1] {
            (array[j], array[j + 1]) = (array[j + 1], array[j])
            swapped = true
        }
    }
    if !swapped {
        break
    }
}
print(array)
  • 简单选择排序: 每次从剩下元素中找最小的元素放到对应的位置
var array = [29, 98, 35, 12, 47, 66, 53, 79]
for i in 0..

数组

: 创建数组

var array1 = [String]()
var array2: [String] = []
var array3 = ["apple", "grape", "banana", "apple", "orange"]
var array4 = [String](count: 100, repeatedValue: "")

: 获取数组元素个数

print(array1.count)
print(array2.count)
print(array3.count)
print(array4.count)

: 对数组中的元素进行遍历

for index in 0..

: 向数组中添加元素

array1 += ["strawberry"]  // +=即在数组的最后加入相当于.append
array1.append("pear")
array1.insert("waxberry", atIndex: 0)   // .insert即在数组的指定位置加入
array1.insert("watermelon", atIndex: 2)
array1.insert("lemon", atIndex: array1.count)  //在这个数组的最后加入
print(array1)

: 从数组中删除元素

array1.removeAtIndex(2) // 指定位置删除
print(array1)
array1.removeFirst()   // 删除第一个
print(array1)
array1.removeAll()     // 全部删除
print(array1)
//array5.removeAll() 全部删除
//array5.removeAll(keepCapacity: <#T##Bool#>) 只删除元素不回收空间
//array5.removeAtIndex(2) 删除指定位置的元素
//array5.removeRange(0...2)//删除一个范围内的

: 数组的复制

var array5 = array3  // 复制数组
array5[0] = "pitaya"  // 数组的0号位置元素替换为"pitaya"
print(array3)
print(array5)
var array6 = array3[1...3] // 复制数组的一部分
print(array6)

: 数组的+运算

let array7 = array1 + array3
print(array7) // 元素排列为 - 先排列array1的元素再排列array3的元素

: 只读循环(在循环过程中不能修改数组元素)

for str in array3 {
    print(str)
}

你可能感兴趣的:(Swift 第一周 小结)