关于Python中用户输入字符串(与变量名相同)无法作为变量名引用的理解以及解决方案
在用户登录账号时,我需要在字典中查找是否存在其账号名称以及密码是否正确。
所以,我想将用户输入的账号赋值给变量,在字典中查找是否有此指值。
代码如下:
1 Ya = {'姓名': 'Ya', 'password': '123', '性别': '男', '职业': '学生'}
2 user_message = {'Ya': Ya}
3
4 in_name = input("输入:")
5 in_password = input("输入:")
6
7 if in_name in user_message:
8 print("存在")
9 # 重点在这下面这句!
10 if in_password == in_name['password']:
11 print("正确")
12 else:
13 print("滚犊子")
按照我的预想,用户输入Ya,赋值给了in_name ,相当于
9 # 重点在这下面这句!
10 if in_password == Ya['password']:
我想这样能行,提出字典Ya中的password与用户输入的password进行匹配。
但结果确实意料之外的,报错如下
输入:Ya
输入:123
存在
Traceback (most recent call last):
File "D:\AAAAA\20211007try\user_message.py", line 16, in <module>
if in_password == in_name['password']:
TypeError: string indices must be integers
#TypeError:字符串索引必须是整数
用户输入的字符串“Ya”虽然和变量Ya看起来相同,但其起到的作用在程序中是完全不同的
变量名是变量名,字符串是字符串,格式很重要
这种傻的离谱的想法最好还是不要有,亦或者是因为我还不太懂
原理我还是没特别清楚,希望大神可以留言解释。
然后,事情总要解决的,我随意的换了一种方式,代码如下:
1 Ya = {'姓名': 'Ya', 'password': '123', '性别': '男', '职业': '学生'}
2 user_message = {'Ya': Ya}
3
4 in_name = input("输入:")
5 in_password = input("输入:")
6
7 if in_name in user_message:
8 print("存在")
9 if in_password == user_message[in_name]['password']:
10 # if in_password == in_name['password']:
11 print("Y")
12 else:
13 print("滚犊子")
字符串有字符串的去处,这次我将in_name作为查找字典的键,而非变量。
于是,user_message[in_name] == 变量Ya
再从Ya中查找出password与输入的进行对比匹配
这次成功了
认真的思考这两次的对比,
我妄图将字符串用成变量名,这是出现这次事故的原因
print(type(Ya),type(in_name)) <class 'dict'> <class 'str'>
也许有其他办法能解决
关于Python中用户输入字符串(与变量名相同)无法作为变量名引用的理解以及解决方案的更多相关文章
- Python中判断输入字符串是否为数字的方法
在写物理实验图像处理的脚本时,遇到了一个判断输入的字符串是否为数字的方法 最开始我的思路是这个 test = input() while test.isdigit(): # do something ...
- python中的输入和输出
输入和输出 输出: 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print('hello, ...
- python学习第九讲,python中的数据类型,字符串的使用与介绍
目录 python学习第九讲,python中的数据类型,字符串的使用与介绍 一丶字符串 1.字符串的定义 2.字符串的常见操作 3.字符串操作 len count index操作 4.判断空白字符,判 ...
- shell编程中用户输入处理(shell 04)
shell编程中用户输入处理1.命令行参数2.脚本运行时获取输入 命令行参数 通过空格来进行分割的位置参数 :$+position $0,$1,$2 ....$0 :程序名$1,$2,$3 ... $ ...
- Python 中的反转字符串:reversed()、切片等
摘要:以相反的顺序反转和处理字符串可能是编程中的一项常见任务.Python 提供了一组工具和技术,可以帮助您快速有效地执行字符串反转. 本文分享自华为云社区<Python 中的反转字符串:rev ...
- C#根据用户输入字符串,输出大写字母有几个,小写字母有几个
static void Main(string[] args) { // 根据用户输入字符串,输出大写字母有几个,小写字母有几个. Console.WriteLine("请输入一行英文代码& ...
- 简介Python中用于处理字符串的center()方法
简介Python中用于处理字符串的center()方法 这篇文章主要介绍了简介Python中用于处理字符串的center()方法,是Python入门中的基础知识,需要的朋友可以参考下 center() ...
- Python中如何将字符串作为变量名
应用场景描述: 通过配置文件获取服务器上配置的服务名及运行端口号,编写python脚本检测服务上服务是否在运行? #!/usr/bin/env python # -*- coding:utf-8 -* ...
- Python学习-用户输入和字符串拼接
用户输入和字符串拼接 #用户输入和字符串拼接username=input("username:")age=int(input("Age:")) #转换整数型 ...
随机推荐
- P4980-[模板]Pólya定理
正题 题目链接:https://www.luogu.com.cn/problem/P4980 题目大意 \(n\)个物品图上\(m\)种颜色,求在可以旋转的情况下本质不同的涂色方案. 解题思路 既然是 ...
- 这是我见过最简单的博客文只有一张图,Python基础10分钟学完
- 踩坑系列《九》 无法获取实体类xxx对应的表名
话不多说,直接说明原因 类似于 @MapperScan(basePackages = "com.hyxiao.user.mapper") 启动类的mapper扫描注解的导入包正确的 ...
- 深入理解JAVA虚拟机《二》
对象.内存回收和垃圾收集算法 一.引用计数算法(不可靠) 现在很多比较普遍的判断对象是否存活的算法就是引用计数算法,其大概原理是:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当 ...
- tomcat unkonwhost
服务器能ping通域名,tomcat死活不行,重启tomcat解决
- WebXml文件与SpringMVC的联系
WebXml文件与SpringMVC的联系 无论采用何种框架来进行Java Web的开发,只要是Web项目必须在WEB-INF下有web.xml,这是java规范. 当然,我们最早接触到Java We ...
- 用最简单的方式理解 IoC 控制反转
思想引入 假设一个系统原先只设定有一个默认的方法去完成业务,这里举例这个原先设定开发的是 UserDaoImpl(可能有些牵强,但是不影响我们对逻辑的理解)这样一个业务. 后来有一天,需求变了,业务流 ...
- SudokuSolver 1.0:用C++实现的数独解题程序 【二】
本篇是 SudokuSolver 1.0:用C++实现的数独解题程序 [一] 的续篇. CQuizDealer::loadQuiz 接口实现 1 CQuizDealer* CQuizDealer::s ...
- spring boot log4j2 最佳实践
为什么选择 log4j2 Log4j2 使用了 LMAX Disruptor 库.在多线程场景中,异步 Logger 的吞吐量比 Log4j 1.x 和 Logback 高 18 倍,延迟低几个数量级 ...
- XiaoXin 13Pro-Hackintosh 小新13pro崇尚极简的黑苹果双系统
Lenovo XiaoXin-13-Pro-Hackintosh 关键词:Hackintosh XiaoXin EFI Tutorial Lenovo 以下提及的EFI及其他部分文件见github仓库 ...