Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python到Swift的转换_Swift - Fatal编程技术网

Python到Swift的转换

Python到Swift的转换,swift,Swift,我刚从斯威夫特开始。我想知道是否有办法将Python代码转换为Swift 5?我的Python代码非常简短。下面Python代码的最终结果是从列表中打印出随机选择的项目;与一周中的几天相匹配。我设法在Swift中找到了随机化,但没有找到如何将这7个随机选择的项目分配到一周中相应的几天。 我的Python代码: def randomMenu(): meals = ["Chicken", "Hamburgers", "Hot Dogs", "Lamb", "Pizza", "Pork Cho

我刚从斯威夫特开始。我想知道是否有办法将Python代码转换为Swift 5?我的Python代码非常简短。下面Python代码的最终结果是从列表中打印出随机选择的项目;与一周中的几天相匹配。我设法在Swift中找到了随机化,但没有找到如何将这7个随机选择的项目分配到一周中相应的几天。 我的Python代码:

def randomMenu():
    meals = ["Chicken", "Hamburgers", "Hot Dogs", "Lamb", "Pizza", "Pork Chops", "Schnitzel", "Shrimp", "Spaghetti", "BBQ", "Tacos", "Takeout", "Takeout Pizza", "Mexican", "Schaschlik", "Korean", "Harissa"]

    days = ['Mon', 'Tue' , 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']

    random.shuffle(meals)

     day_meals = random.sample(meals , 7)

     for index in range(7):
        print(f'The selected meal for {days[index]}:   {day_meals[index]}')

randomMenu()
以下是我迄今为止与斯威夫特的合作

let menuItems = ["Salmon", "Salad", "Curry", "Sushi", "Pizza", "Chicken", "Hamburgers", "Hot Dogs", "Lamb", "Pork Chops", "Schnitzel", "Shrimp", "Spaghetti", "BBQ", "Tacos", "Takeout", "Mexican", "Schaschlik", "Korean", "Harissa"]
var resultSet = Set<String>()
while resultSet.count < 7 {
    let randomIndex = Int(arc4random_uniform(UInt32(menuItems.count)))
    resultSet.insert(menuItems[randomIndex])
}
let resultArray = Array(resultSet)
print(resultArray)
let menuItems=[“三文鱼”、“沙拉”、“咖喱”、“寿司”、“披萨”、“鸡肉”、“汉堡”、“热狗”、“羊肉”、“猪排”、“肉排”、“虾”、“意大利面”、“烧烤”、“玉米卷”、“外卖”、“墨西哥”、“烤肉”、“韩国”、“哈里萨”]
var resultSet=Set()
而resultSet.count<7{
设randomIndex=Int(arc4random_统一(UInt32(menuItems.count)))
resultSet.insert(menuItems[randomIndex])
}
让resultArray=Array(resultSet)
打印(resultArray)

您只需在餐点阵列上使用
shuffled()

let menuItems = ["Salmon", "Salad", "Curry", "Sushi", "Pizza", "Chicken", "Hamburgers", "Hot Dogs", "Lamb", "Pork Chops", "Schnitzel", "Shrimp", "Spaghetti", "BBQ", "Tacos", "Takeout", "Mexican", "Schaschlik", "Korean", "Harissa"]
let days = ["Mon", "Tue" , "Wed", "Thu", "Fri", "Sat", "Sun"]

let random = menuItems.shuffled()
for (index, value) in days.enumerated() {
    print("\(value) \(random[index])")
}

因此,您已经创建了一个包含七个随机菜单项的数组。现在,你到底想做什么。你将这7个随机选择的项目分配到一周中相应的几天是什么意思?你想制作一本字典,其中键是day,值是菜单项吗?对不起,我试着发布Swift代码,但发布后很难阅读-似乎无法正确格式化。随机选择的7个项目(日餐)分配给一周中的每一天(天)。最终结果如下:周一:热狗周二:鸡肉周三:羔羊周四:比萨饼等。如果你只想在控制台上打印出来,你可以参考iOSDev发布的答案。或者,请进一步说明您想要做什么。最终结果是创建一个包含此(代码)功能的iOS应用程序(供个人使用)。感谢您抽出时间提供帮助,请不要在上面花费太多时间。非常感谢你的帮助。当我运行代码(使用Set)时,在“resultSet…”之后的第5行收到以下错误消息,错误指示必须将可选类型为“字符串”的值展开为类型为“字符串”的值。一些我可以研究并尝试修复的东西。再次感谢您的时间和帮助,非常感谢。没有设置的代码运行良好,正是我想要的。@RobertSalter
menuItems.randomElement()
返回一个可选字符串。再次查看更新后的答案,感谢您抽出时间帮助。感谢您的回复。如果我正确理解了这段代码,那么这段代码实际上不会生成随机选择。相反,它只是“洗牌”菜单项,“枚举”遍历这些项并返回一系列对-值表示“天”,索引表示“菜单项”。需要学习的内容很多……再次感谢您的回答。@RobertSalter,数组的无序排列将它们按随机顺序排列,因此实际上不需要仅从前7个集合创建新集合(集合、数组等)。我想你到底想用这个数组做什么决定了它与工作日数组配对的最佳方式。谢谢你花时间解释。
let resultArray = Array(menuItems.shuffled().prefix(upTo: 7))
for (day, item) in zip(days, resultArray) {
    print("The selected meal for \(day):   \(item)")
}
let menuItems = ["Salmon", "Salad", "Curry", "Sushi", "Pizza", "Chicken", "Hamburgers", "Hot Dogs", "Lamb", "Pork Chops", "Schnitzel", "Shrimp", "Spaghetti", "BBQ", "Tacos", "Takeout", "Mexican", "Schaschlik", "Korean", "Harissa"]
let days = ["Mon", "Tue" , "Wed", "Thu", "Fri", "Sat", "Sun"]

let random = menuItems.shuffled()
for (index, value) in days.enumerated() {
    print("\(value) \(random[index])")
}