GVKun编程网logo

使用self.xxxx作为默认参数-Python(python self怎么用)

11

在本文中,您将会了解到关于使用self.xxxx作为默认参数-Python的新资讯,同时我们还将为您解释pythonself怎么用的相关在本文中,我们将带你探索使用self.xxxx作为默认参数-Py

在本文中,您将会了解到关于使用self.xxxx作为默认参数-Python的新资讯,同时我们还将为您解释python self怎么用的相关在本文中,我们将带你探索使用self.xxxx作为默认参数-Python的奥秘,分析python self怎么用的特点,并给出一些关于Android EditText手机号格式化输入XXX-XXXX-XXXX、android-编辑文本 – 获取国际格式的电话号码,如xxxxxxxxx、Android格式化手机号xxx xxxx xxxx、C# Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).的实用技巧。

本文目录一览:

使用self.xxxx作为默认参数-Python(python self怎么用)

使用self.xxxx作为默认参数-Python(python self怎么用)

我正在尝试简化我的作业问题之一,并使代码更好一点。我正在使用的是二进制搜索树。现在,我的Tree()班级中有一个函数可以查找所有元素并将它们放入列表中。

tree = Tree()#insert a bunch of items into tree

然后我使用makeList()函数从树中取出所有节点,并将它们放入列表中。要调用该makeList()函数,我要做tree.makeList(tree.root)。对我来说,这似乎有些重复。我已经用调用了树对象,tree.所以tree.root只是浪费了一点输入。

现在,makeList函数为:

    def makeList(self, aNode):        if aNode is None:            return []        return [aNode.data] + self.makeList(aNode.lChild) + self.makeList(aNode.rChild)

我想使aNode输入一个默认参数,例如aNode = self.root(它不起作用),这样我就可以用来运行该函数tree.makeList()

第一个问题是,为什么这样不起作用?
第二个问题是,有没有一种方法可以起作用?如您所见,该makeList()函数是递归的,因此我无法在该函数的开头定义任何内容,否则会遇到无限循环。

编辑 这是所有要求的代码:

class Node(object):    def __init__(self, data):        self.data = data        self.lChild = None        self.rChild = Noneclass Tree(object):    def __init__(self):        self.root = None    def __str__(self):        current = self.root    def isEmpty(self):        if self.root == None:            return True        else:            return False    def insert (self, item):        newNode = Node (item)        current = self.root        parent = self.root        if self.root == None:            self.root = newNode        else:            while current != None:                parent = current                if item < current.data:                    current = current.lChild                else:                    current = current.rChild            if item < parent.data:                parent.lChild = newNode            else:                parent.rChild = newNode    def inOrder(self, aNode):        if aNode != None:            self.inOrder(aNode.lChild)            print aNode.data            self.inOrder(aNode.rChild)    def makeList(self, aNode):        if aNode is None:            return []        return [aNode.data] + self.makeList(aNode.lChild) + self.makeList(aNode.rChild)    def isSimilar(self, n, m):        nList = self.makeList(n.root)        mList = self.makeList(m.root)         print mList == nList

答案1

小编典典

拉尔斯曼人回答了您的第一个问题

它不起作用,因为默认参数是在函数定义时而不是在调用时求值的:

def f(lst = []):    lst.append(1)    return lstprint(f()) # prints [1]print(f()) # prints [1, 1]

常见的策略是使用None默认参数。如果None是有效值,请使用单例哨兵:

NOTHING = object()def f(arg = NOTHING):    if arg is NOTHING:        # no argument    # etc.

对于第二个问题,您能否在跳转之前简单地看一下以避免递归?

def makeList(self, aNode=None):    if aNode is None:        aNode = self.root    treeaslist = [aNode.data]    if aNode.lChild:        treeaslist.extend(self.makeList(aNode.lChild))    if aNode.rChild:        treeaslist.extend(self.makeList(aNode.rChild))    return treeaslist

Android EditText手机号格式化输入XXX-XXXX-XXXX

Android EditText手机号格式化输入XXX-XXXX-XXXX

先来效果图:

设置手机格式化操作只需要设置EditText的addTextChangedListener的监听,下面看代码

/*editText输入监听*/
        et_activity_up_login_phone.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                if (s == null || s.length() == 0) return;
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < s.length(); i++) {
                    if (i != 3 && i != 8 && s.charAt(i) == ''-'') {
                        continue;
                    } else {
                        sb.append(s.charAt(i));
                        if ((sb.length() == 4 || sb.length() == 9) && sb.charAt(sb.length() - 1) != ''-'') {
                            sb.insert(sb.length() - 1, ''-'');
                        }
                    }
                }
                if (!sb.toString().equals(s.toString())) {
                    int index = start + 1;
                    if (sb.charAt(start) == ''-'') {
                        if (before == 0) {
                            index++;
                        } else {
                            index--;
                        }
                    } else {
                        if (before == 1) {
                            index--;
                        }
                    }
                    et_activity_up_login_phone.setText(sb.toString());
                    et_activity_up_login_phone.setSelection(index);
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {
                //获取没有-的手机号
                endPhone = et_activity_up_login_phone.getText().toString().replace("-", "");

                if (endPhone.length() == 11) {//如果最后的 号码为11位
                    //判断手机号是否正确
                    if (!Tool.isPhoneNum(endPhone)) {
                        Toast.makeText(UpLoginActivity.this, "请输入正确的手机号:" + endPhone, Toast.LENGTH_SHORT).show();
                    } else {
                        //改变获取验证码字体颜色
                        tv_activity_up_login_djs.setTextColor(Color.parseColor("#64aaff"));//高亮,可以点击
                        djsType = true;//设置验证码为可点击状态
                        tv_activity_up_login_djs.setClickable(true);
                    }
                }
            }
        });
    }

 

android-编辑文本 – 获取国际格式的电话号码,如xxxxxxxxx

android-编辑文本 – 获取国际格式的电话号码,如xxxxxxxxx

我有编辑文本元素,将获得电话号码,我需要电话号码包括xxx格式的国家代码.我使用的是 android:inputType =“phone”

我如何强制输入在数字中包含该国家代码?

如果可能或类似,我想要谷歌联系人.如果不是标志只是国家代码是可能的,那也没关系.

解决方法

最后我使用了 IntlPhoneInput.虽然我不得不调整它以供我使用,但这是一个很好的库.

它可以在gradle上使用.

compile ''net.rimoto:intlphoneinput:0.9.3''

Android格式化手机号xxx xxxx xxxx

Android格式化手机号xxx xxxx xxxx

1.输入框EditText布局

2.EditText设置监听

et1.addTextChangedListener(new TextWatcher());

3.监听中实现

 1    et1.addTextChangedListener(new TextWatcher() {
 2             @Override
 3             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
 4 
 5             }
 6 
 7             @Override
 8             public void onTextChanged(CharSequence s, int start, int before, int count) {
 9                 String contents = s.toString();
10                 int length = contents.length();
11                 if(length == 4){
12                     if(contents.substring(3).equals(new String(" "))){ // -
13                         contents = contents.substring(0, 3);
14                         et1.setText(contents);
15                         et1.setSelection(contents.length());
16                     }else{ // +
17                         contents = contents.substring(0, 3) + " " + contents.substring(3);
18                         et1.setText(contents);
19                         et1.setSelection(contents.length());
20                     }
21                 } else if(length == 9){
22                     if(contents.substring(8).equals(new String(" "))){ // -
23                         contents = contents.substring(0, 8);
24                         et1.setText(contents);
25                         et1.setSelection(contents.length());
26                     }else{// +
27                         contents = contents.substring(0, 8) + " " + contents.substring(8);
28                         et1.setText(contents);
29                         et1.setSelection(contents.length());
30                     }
31                 }
32 
33             }
34 
35             @Override
36             public void afterTextChanged(Editable s) {
37                 String tel = et1.getText().toString().trim();
38                 tel = tel.replace(" ", "");
39                 if (tel.length() == 11) {
40                     couldClick = true;   //手机号
41                 } else {
42                     couldClick = false;  //不满足条件
43                 }
44             }
45         });

 

C# Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

C# Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

一、问题描述

  在做C# 的 Guid 转换时,出现这个问题:Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). 中文翻译是:guid应包含32位数字和4个破折号(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX)。

二、解决方案

  看我们转换的字符串是否满足这个条件:guid应包含32位数字和4个破折号(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX),不满足修改满足即可!

三、案例

  我在转换的时候,由于我需要转换的字符串,不满足guid的规则,才出现这个错误。

仔细观察,我需要转换的字符串,根本就不满足 guid 的特点,当我把 ar 中的 “ " ” 号去掉就可以了。

OK,转换完成!

 

---------------修改2019年05月09日---------------------

因为我的 DataId 本来就是一个Json 字符串,所以没有必要去使用 Replace() 、Split(),直接使用 JsonConvert 操作多好,所以我改为:

var items = JsonConvert.DeserializeObject<List<Guid>>(_recordBookRepository.Get(input.RecordBookId).DataId);

让专业的方法,处理专业的事情,是否是最优解。

 

---------------修改2019年05月23日---------------------

判断 Guid 是否为空。

传入的参数:

/// <summary>
        /// id
        /// </summary>
        public Guid? StatGroupId { get; set; }

判断是否为空:

var boolStatGroup = input.StatGroupId.HasValue && input.StatGroupId != Guid.Empty;

 

关于使用self.xxxx作为默认参数-Pythonpython self怎么用的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android EditText手机号格式化输入XXX-XXXX-XXXX、android-编辑文本 – 获取国际格式的电话号码,如xxxxxxxxx、Android格式化手机号xxx xxxx xxxx、C# Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).等相关知识的信息别忘了在本站进行查找喔。

本文标签: