PYTHON3:返回值的缩进

时间:2019-10-14 06:08:48

标签: python

这很好用,但我不明白为什么这样工作。我认为True值的返回应该在for循环内,但是当我运行该程序时,它的工作方式却相反。 有人可以指出我对返回值缩进的误解吗? 即使解决方案更短,我也想确切地了解我的编码方式。请帮忙!

# My attempt
def palindrome(s):
    mylist = list(s)
    j = -1
    for i in range(0,len(mylist)-1):
        if mylist[i] == mylist[j]:
            i+=1
            j-=1
            continue
        return False
    return True

# Solution answer:
def palindrome(s):
    return s == s[::-1]

4 个答案:

答案 0 :(得分:1)

调用函数时,该函数只能返回一次。

这种package com.rajesh.service; import java.util.Arrays; import java.util.Date; import java.util.HashSet; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.rajesh.model.Role; import com.rajesh.model.User; import com.rajesh.repository.RoleRepository; import com.rajesh.repository.UserRepository; @Service public class UserService { @Autowired private UserRepository userRepository; @Autowired private RoleRepository roleRepository; public User findUserByEmail(String email) { return userRepository.findByEmail(email); } public void saveUser(User user) { user.setShopname(user.getShopname()); user.setName(user.getName()); user.setEmail(user.getEmail()); user.setPassword(user.getPassword()); user.setMobile(user.getMobile()); user.setAddress(user.getAddress()); user.setActive(0); user.setCreatedBy(user.getName()); user.setCreatedDate(new Date()); user.setUpdatedBy(user.getName()); user.setUpdatedDate(new Date()); Role userRole = roleRepository.findByRole("USER"); user.setRoles(new HashSet<Role>(Arrays.asList(userRole))); userRepository.save(user); } public User loginUser(String email,String password) { return userRepository.loginUser(email, password); } public Integer isActiveUserStatus(String email) { Integer activeStatus = userRepository.isActiveUserStatus(email); return activeStatus; } } 模式在各种编程语言中都很常见。它直观高效。

比方说,您必须检查1000个值的列表中是否仅包含偶数。您遍历列表并检查每个元素是否均等。 一旦找到奇数,就不需要走更远的距离。因此,您可以高效并立即返回并退出循环。

希望这里是您代码的更直观版本:

return

一旦您知道输入不是回文,就不需要进一步。 如果您不需要停下来,那就是回文。

答案 1 :(得分:0)

它们遵循与其他任何声明完全相同的规则。你写的意思

"project’s customized code snippet"

答案 2 :(得分:0)

# My attempt
def palindrome(s):
    mylist = list(s)
    j = -1
    for i in range(0,len(mylist)-1):
        if mylist[i] == mylist[j]:
            i+=1
            j-=1
            continue
        return False
    return True

在上面的代码中,每次通过循环比较列表中的值(使用变量“ i”向前和使用变量“ j”)来比较值以检查值是否不匹配时,for循环中会发生什么。并在任何一个字母不匹配时立即返回false,因此退出循环。并且只有在for循环完成后才返回true,这意味着在循环中没有发现不匹配的情况

注意:i = 0给出第一个索引,i + = 1向前迭代,j = -1给出最后索引,j- = 1向后迭代

答案 3 :(得分:0)

基本上,当您在numpy中为数组建立索引时,您可以这样做:

a[start:end:step]

,适用于所有尺寸。如果step为负,则以相反顺序返回值。因此,如果step为-1,则数组a [::-1]是a [::]的反向数组。

a[::-1] = a[::]

然后,如果序列与其逆序列相同,则根据定义,它是回文。

请参阅: https://www.geeksforgeeks.org/numpy-indexing/