我在Swift 3.0中尝试使用switch语句 使用我的代码,无论我的变量是什么,我都会得到A. 为什么我只得到A?
from sys import argv
script, file1 = argv
import pickle
def rewind(f):
print(f.seek(0))
f.seek(0)
txt = open(file1, 'a+')
txt.write(raw_input("What would you like to add to the file?:\n"))
rewind(txt)
text = txt.read()
print text
def breakwords(f):
split_words = f.split(' ')
return split_words
brkwrds = breakwords(text)
print brkwrds
def sort_words(f):
sorted_words = sorted(f)
return sorted_words
sw = sort_words(brkwrds)
rewind(txt)
txt.truncate()
txt.write(pickle.dumps(sw).encode("string-escape")+"\n")
txt.close()
答案 0 :(得分:8)
switch语句考虑一个值并将其与几种可能的匹配模式进行比较。然后,它会根据成功匹配的第一个模式执行适当的代码块。
在您的具体案例中,请尝试使用:
var grade = 45
switch grade {
case 90 ..< 100: //Numbers 90-99 Use 90...100 to 90-100
print("A")
case (80 ..< 90): //80 - 89
print("B")
case (70 ..< 80): // 70 - 79
print("C")
case (0 ..< 70): // 0 - 69
print("D")
default:
print("F. You failed")//Any number less than 0 or greater than 99
}
与C和Objective-C中的switch语句相比,切换 Swift中的语句不会落在每个案例的底部 默认情况下进入下一个。相反,整个switch语句 一旦第一个匹配的开关盒就完成它的执行 完成后,无需明确的中断声明。这使得 switch语句比C语言更安全,更容易使用 避免误操作多个开关盒。
此致
答案 1 :(得分:3)
开关从上到下进行评估,因此自第一次测试满足(grade < 100
)后,程序将始终返回A.您可以简单地颠倒案例的顺序。通常,您希望switch语句从最严格限制到最不限制。