『壹』 《Lua程序設計》之 數值
在Lua 5.2及之前的版本,所有數值都以雙精度浮點格式表示,從5.3版本開始,Lua語言的number分為integer的64位整型和被稱為float的雙精度浮點型,若想要32位的整型和單精度浮點類型,可以將Lua 5.3編譯為精簡姿哪Lua(Small Lua)模式.
可以使用%a參數進行格式化輸出,如:
這種格式很難閱讀,但是可以保留所有浮點數的精度,並且比十進制轉換速度更快
// 區分整數和浮點數,基冊逗由於5.3版本之前沒有整數的概念,所以math.floor永遠返回整數,// 的操作數只要有一個浮點數,則向下取整返回浮點數
取模運算的定義:
由此可知,取模和取余數差不多,當想要一個值不超過某個范圍的時候,就對該值進行取模, 在整數的情況下, a % b 取模的值永遠在[1,b-1]范圍內,即 5 % 3的取模結果在[1,3]之間
Lua語言的關系運算六種
標准數學庫math,包括三角函數(sin,cos,tan,asin等)、指數函數、取整函數、最大和最小函數max和min,random以及常量pi和huge(最大可表示數值,在大多數平台上代表inf)
math.random
math.randomseed 用於設置偽隨機數發生器的搏賣種子,看例子就明白了了
math.randomseed每次設置一樣的值,則math.random就會生成一樣的隨機數,不管math.random帶不帶參數。
三個取整函數:
floor 向負無窮取整;
ceil 向正無窮取整;
modf 向0取整,並會返回小數部分作為第二個結果;
如果想將數值x向最近的整數取整,這個問題沒看懂??????
數學庫中的常量定義了整型值的最大值math.maxinteger和最小值math.mininteger
這段內容也沒完全看懂?????
整型轉行成浮點型
浮點型轉行成整型
可以充分利用math.tointeger函數來判斷一個數值是否為整數
從上到下,優先順序從高到低
在二元運算符中,除了冪運算和連接操作符是右結合外,其他都是左結合
Lua 5.3 支持的最大整數為2^63,而Lua 5.2支持的最大整數為2^53,由於5.2及以下版本沒有整數,所以跟整數相關的函數都不支持,如math.type()、math.maxinteger、math.mininteger、math.tointeger等
『貳』 用lua編程,三道題目
Test1
local a[10]={3,4,6,7,8,4,2,1,9,10}
function q1(array)
local swap = 0
local newArray = {}
for i = 1, #array do
for j = i + 1, #array do
if array[j] < array[i] then
swap = array[i]
array[i] = array[j]
array[j] = swap
end
end
newArray[1] = array[1]
for i = 1, #array do
if array[i] != newArray[#newArray] then
newArray[#newArray + 1] = array[i]
end
end
return newArray
end
function q2(array)
local array1 = {}
local array2 = {}
for i = 1, #array do
if array[i] % 2 == 0 then
array2[#array2 + 1] = array[i]
else
array1[#array1 + 1] = array[i]
end
end
return array1, array2
end
『叄』 用lua語言編程:輸入一個字元串,長度不超過50,要求求出字元串中任意字元出現的次數。
將以下代碼保存為lua_string.lua:
#!/usr/bin/envlua
s={}
a=io.read()--讀入字元串,可含漢字
len=#(string.gsub(a,"[128-191]",""))--計算字元數(不是位元組數)
print(len)
forcinstring.gmatch(a,".[128-191]*")do--迭代出每一個字元
ifs[c]團納羨==nilthen--並計算出現次數
s[c]=1
else
s[c]=s[c]+1
end
end
fork,vinpairs(s)do--列印結果
print(k,v)
end
雖然題主沒有特別提到對unicode友好,不過考慮到多位元組字元現在很常用,所以把utf-8的支持也加進去了。
其中的知識點,參考《Programming in LUA》第三版中以下章節:
-- 2.1 Nil
-- 4.3 Control Structures
-- 7.2 The Semantics of the Generic for
-- 21.1 Basic String Functions
-- 21.2 Pattern-Matching Functions
-- 21.7 Unicode
-- 22.1 The Simple I/O Model
測試輸出如下:
moose@debian:~/Code/_knowledge/lua_string$./lua_string.lua
nihao你好
7
a1
h1
好1
i1
你1
o1
n1
moose@debian:~/Code/_knowledge/lua_string$./lua_string.lua
你好你好
4
好2
你2
moose@debian:~/Code/_knowledge/lua_string$./lua_string.lua
用lua語言編程:輸入一個字元串,長度不超過50,要求求出字元串中任意字元出現的次數。
43
a茄喚1
符3
一1
中1
,2
不1
求2
串2
l1
01
度1
超1
u1
出2
數1
個1
次1
輸1
程1
:1
的1
意1
語1
編1
。1
入1
現1
用1
長塌拍1
任1
51
字3
言1
要1
過1