关于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:")) #转换整数型 ...
随机推荐
- CF710F-String Set Queries【AC自动机,二进制分组】
正题 题目链接:https://www.luogu.com.cn/problem/CF710F 题目大意 \(T\)次操作 往集合中加入一个字符串 往集合中删除一个字符串 给出一个模式串求出现的集合里 ...
- div 可编辑--获取光标位置插入元素
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Language" ...
- 火爆全网的《鱿鱼游戏》,今天用 Python 分析一波影评
Hello,各位读者朋友们好啊,我是小张~ 这不国庆嘛,就把最近很火的一个韩剧<鱿鱼游戏>刷了下,这部剧整体剧情来说还是非常不错的,很值得一看, 作为一个技术博主,当然不能在这儿介绍这部剧 ...
- sqlserver 2000 insert注入的问题
一个sql server 2000的注入点猜测语句如下:insert into t1(col1, col2, col3) values('注入点1','数据点2','xxx');注入点1的值可以通过o ...
- 如何评估 Serverless 服务能力?这份报告给出了 40 条标准
编者按:两年前,我们还在讨论什么是 Serverless,Serverless 如何落地.如今,已经有评测机构给出了 40 条标准来对 Serverless 的服务能力进行评估,这些评估细则既是技术生 ...
- SQL 居然还能在 Apache ShardingSphere 上实现这些功能?
在去年 10 月 5.0.0-alpha 版本发布之后,Apache ShardingSphere 经历了长达 8 个多月的持续开发与优化,终于在 6 月 25 日正式迎来了 5.0.0-beta 版 ...
- SpringBoot使用注解进行分页
分页使用可以说非常普遍了,有时候会需要非常灵活的方式去开启或关闭分页,尝试使用一下注解的方式来进行分页. 依赖安装 需要使用的依赖: Mybatis-Plus PageHelper SpringBoo ...
- SpringBoot入门03-转发到Thymeleaf
前言 Spring Boot不提倡使用jsp和用View层,而是使用Thymeleaf代替jsp,因为性能可以得到提升. 使用Thymeleaf要加入依赖 Thymeleaf不能直接被访问,它严格遵守 ...
- python中冒泡排序代码实现
1.冒泡排序代码如下图: #冒泡算法l=[12,4,56,10,6,2]for i in range(0,6): for j in range(i+1,6): if l[i]>l[j]: a=l ...
- CORS+XSS的漏洞利用payload
之前有人问我有没有CORS+XSS的利用姿势,翻了一下国内貌似都没有利用姿势于是就写了这篇文章!!! 首先找到一个反射xss,然后使用xss加载javascript代码达到跨域劫持目的payload如 ...